E-Mail über Plugin verschicken

Hi, ich bin gerade dabei ein Plugin zu schreiben, welches einige Werte überwacht und mir im Falle eines Falles eine E-Mail schicken soll.
Hierfür habe ich im Plugin einen Cronjob registriert usw. Dieser ist auch im Backend zu sehen und wird auch korrekt ausgeführt.

In der onRun Funktion des Cronjobs habe ich nun die benötigten Werte für die E-Mail ausgelesen und aufbereitet und möchte mir nun eine E-Mail schicken.

Die E-Mail versuche ich nun auf folgende Art zu schicken:

$mail = Shopware()->Mail();
$mail->IsHTML(0);
$mail->From = Shopware()->Config()->Mail;
$mail->FromName = Shopware()->Config()->Mail;
$mail->Subject = "Fehler XY";
$mail->Body = $status_mail;
$mail->ClearAddresses();
$mail->AddAddress('E-Mail Empfänger', 'Name Empfänger');
$mail->Send();

Jedoch erhalte ich keinerlei E-Mails… Auch wenn die entsprechenden Bedingungen hierfür zutreffen.
Woran kann dies liegen?

Verwendet wird Shopware 5.2.8

Hast du schon probiert die Rückgabe von $mail->send zu überwachen?

Generell würde ich prüfen in wie weit das $mail Objekt gefüllt ist. Ist SMTP/sendmail korrekt konfiguriert?

SMTP ist korrekt eingerichtet, der Shop verschickt sonstige E-Mails wie z.B. Geburtstags E-Mails usw. korrekt.

Habe versucht den Response von $mail->Send() abzufangen und zu returnen wie folgt:

$mail->AddAddress('mail@domain.de', 'EmpfängerName');
if (!$mail->Send()) {
    $res = $mail->ErrorInfo;
} else {
    $res = true;
}
return $res;

Im Cronjob steht dann bei den Ergebnisdaten aber einfach nur “false”.

Wie könnte man den Response debuggen?

Shopware’s Mailer basiert auf Zend’s Mail Komponente. Die stellt einen Transportweg bereit, bei dem die E-Mail anstatt versendet zu werden, in eine Datei geschrieben wird (Zend_Mail_Transport_File). Vielleicht kannst Du daraus mehr Rückschlüsse ziehen.

Diese müsste man als Parameter bei der $mail->send() Methode mit angeben.

Ich glaube ich konnte das Problem lokalisieren.

Die Bedinungen für den Mailversand treffen zwar zu, er landet aber nie in der Funktion.
Deshalb wird der return (selbst wenn ich dort einen festen string hinterlege) nicht an den Cronjob zurückgegeben.

Es liegt also vermutlich garnicht an der Mail-Funktion selbst.

Werde da jetzt mal paar Sachen durchprobieren.

Danke für die Hinweise.

 

EDIT: Lag wirklich an der Abfrage die über / vor der E-Mail Funktion lag. Funktioniert nun alles.

Danke nochmal.