Zum Inhalt springen

automatischer Mail Versand nach Abschicken eines Formulars

Erstellt am 17. Dezember 2013 · 7 Antworten · letzte Antwort am 17. Dezember 2013

Tags: Extbase, E-Mail-Versand, Frage

R-Andy ·

Hallo zusammen,

ich arbeite gerade an einer Extension, die Spenden entgegen nehmen soll. Nach der Einreichung einer Spende soll der Verantwortliche der Organisation automatisch eine Mail erhalten. Ebenso der Spender selbst.
Ich habe bisher eine Funktion für den Mailversand geschrieben, die wie folgt aussieht:

protected function mailVersandSpender(\TYPO3\Spendentool\Domain\Model\Spende $newSpende) {
		$toMail = $newSpende.email;
		$toName = $newSpende.nachname;
		$mail = (new \TYPO3\CMS\Core\Mail\MailMessage());
		$mail->setFrom(array('lmh@xyz.de' => 'Empfaenger'));
		$mail->setTo(array($toMail => $toName));
		$mail->setSubject('Ihre Spende');
		$mail->setBody('Text');
		$mail->addPart('<h1>Vielen Dank f&uuml;r Ihre Spende</h1></ br>
						Ihre Spende ist bei uns eingegangen. Der angegebene Betrag wird innerhalb der n&auml;chsten Tage von
						Ihrem angegebenen Konto eingezogen.</ br>', 'text/html');	
		$mail->send();
	}

Das versenden der Mail funktioniert einwandfrei. Die Mail sieht zwar nicht sehr toll aus bisher, das ist aber nebensache. Was allerdings nicht funktioniert, ist das automatische auslesen der Mail Adresse aus der neuen Spende.

Kann mir jemand helfen, wo mein Fehler bzw. Denkfehler liegt?

Vielen Dank im Voraus.

Schweriner ·

Hi. Bist Du sicher, dass die Funktion setTo ein Array erwartet? Hast Du das Objekt $newSpende mal gedebuggt und mal geschaut ob Du richtig auf das Feld mit der Mail zugreifst?

R-Andy ·

Hi,
die Funktion setTo funktioniert, wenn ich eine echte Mail Adresse eingebe. Daran liegt es nicht.
Wenn ich mir $newSpende.email ausgebe, zeigt er mir nur den Pfad zur Klasse an. Etwa so: \TYPO3\Spendentool\Domain\Model\Spende email

Vielleicht sollte ich meine Frage etwas präziser stellen bzw. umschreiben. Ich rufe die Mailfunktion aus der Create Action auf und übergebe von dort aus $newSpende. Daher bin ich mir nicht ganz sicher, ob $newSpende schon aus der Create Action richtig übergeben wird.

Das sieht etwa so aus:

public function createAction(\TYPO3\Spendentool\Domain\Model\Spende $newSpende) {
		$this->spendeRepository->add($newSpende);
		
		/**
		*	Mailversand
		*/
			$this->mailVersandSpender($newSpende);
R-Andy ·

Blöde Frage, aber wie kann ich das Objekt aus dem Controller richtig debuggen.
Ich bin noch ein ziemlicher Anfänger was php und Typo3 angeht ;-)

Schweriner ·

Unter TYPO3 6.x mit
\TYPO3\CMS\Core\Utility\DebugUtility::debug();

Ältere Versionen t3lib_div::debug() und t3lib_utility_debug::debug();

R-Andy ·

Danke für die Antwort.
Ich erhalte folgende Ausgabe, aus der ich wohl entnehmen kann, dass $newSpende richtige Werte hat und an die Funktion mailVersandSpender übergeben wird.

newSpende
|Object:

TYPO3\Spendentool\Domain\Model\Spende Object
(
[spendensumme:protected] => 131217
[vorname:protected] => andreas
[nachname:protected] => riffel
[grufeld:protected] =>
[kontoinhaber:protected] =>
[iban:protected] => 123234
[bic:protected] => 234234
[email:protected] => mail@abc.de

R-Andy · · Beste Antwort

So, habe das Problem gefunden.
Ich kann logischerweise von der Klasse SpendeController auf das Objekt der Klasse Spende zugreifen. Ich muss die getter Funktionen zu $newSpende aufrufen.

Vielen Dank für deine Hilfe, jetzt kommt auch die Mail an :-)