SwiftMailer nicht E-mail senden, warum?
SwiftMail nicht senden, meine E-Mail, wenn mail()
funktioniert. Gleiche wie hier.
Habe ich den EchoLogger aber es druckt nicht alles.
$message = Swift_Message::newInstance();
$message->setSubject('Test');
$message->setTo( $email );
$message->setFrom(ABSENDER);
$message->setBody($nl_text);
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$logger = new Swift_Plugins_Loggers_EchoLogger();
$mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));
$result = $mailer->send($message, $failures);
var_dump($failures);
Die E-Mail ist wieder in $failures
aber warum?
Update
In Swift_Transport_SimpleMailInvoker::mail
ich weggeworfen, die Parameter und bekam dies:
$headers =>
string(208) "Message-ID: <[email protected]>
Date: Wed, 16 May 2012 14:57:44 +0200
From: [email protected]
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
"
$extraParams =>
string(15) "[email protected]"
$to, $subject, $body
ist die gleiche wie ich in mail()
. Noch keine Idee, was das problem ist.
Update #2
Dies funktionierte gut für mich:
mail($email, 'Test', $nl_text, "From: " . ABSENDER);
Haftungsausschluss: Dies ist keine Lösung, aber der workaround, den ich verwendet, weil ich nicht die Zeit haben, den debugger, den Rahmen und die finden wirklich eine Lösung. Fühlen Sie sich frei, verwenden Sie die Informationen, die oben gegeben zu Debuggen, sich selbst, und posten Sie Ihre Lösung hier. Ich werde Sie gerne annehmen und upvote es.
- Könnten Sie sich eine Lösung für dieses ?
- Meine Lösung ist, ersetzen Sie es mit einem einfachen
mail($email, 'Anmeldung', $nl_text, "From: " . ABSENDER);
aber es löst das problem nicht, also habe ich unten Stimmen und schließlich gelöscht meine Antwort. Das problem würde erfordern einige debugging, aber ich habe nicht die Zeit gehabt dafür. - Schön, man sollte posten, dass er als Antwort.
- Noch meine Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem.
Gemäß der Dokumentation swiftmailer.org standardmäßig Swift_MailTransport::newInstance() Parameter verwendet
-f%s
- und das ist, warum Sie bekam"[email protected]"
zu lösen, dass statt Leerzeichen zwischen-f %s
.Ihr code nun so aussieht:
$message = Swift_Message::newInstance('-f %s')
;Ich löste das problem einfach vorbei
null
zu __construct(). So meine funktionierende code sieht so aus:$message = Swift_Message::newInstance(null)
;Ich hoffe, es wird jemand helfen.
P. S. ich benutze Postfix um emails zu versenden.
Ich schlage vor, Sie verwenden den debugger und Schritt durch den code hinter send().
Wenn Sie nicht verwenden können, einen debugger, sollten Sie einen Blick auf die Funktion
mail
imlib/classes/Swift/Transport/SimpleMailInvoker.php
. Es ist ein Aufruf an die interne mail-Funktion mit einem shutup-operator (@). Vielleicht entfernen Sie diesen operator können, zeigen Sie eine Fehlermeldung. Sie können auch verwendenvar_dump()
- dump-Parameter übergeben es.War ich in der Lage, es zu beheben. Ich war mit [email protected] im from-header, und diese E-Mail-Konto wurde nicht erstellt. Ich erstellt [email protected] und meine E-Mails zu arbeiten begonnen. Ich hoffe, das hilft jemandem.
Sieht aus wie bist du mit dem Standard-transport-Mechanismus, der die nach Ihrer docs verwendet
mail()
standardmäßig.Gravierende Nachteile bei der Verwendung dieser Transport sind :
Quelle
Wenn ich Debuggen würden, würde ich Sie finden, SwiftMailer Umsetzung der
mail()
Funktion und der dump-Argumente, es ist vorbei und vergleichen Sie mit Ihrer eigenen Arbeitsversionmail()
. Ich habe keine Erfahrung mit SwiftMailer aber dies scheint wie eine schnelle option.mail()
🙂Das problem ist in
Swift_Transport_MailTransport, private $_extraParams = '-f%s'
.Die Flagge
'-f'
(siehe dein code:string(15) "[email protected]"
) schlägt fehl in einigen Situationen. Code Igniter-hat den gleichen "bug".Fand ich heraus, auf symfony wenn ich nur verlassen Sie die Funktion mit "exit()" zum Beispiel, swiftmailer nicht die E-mail senden, aber wenn ich am Ende mit
return new Response(); sendet es in Ordnung. also bin ich nicht sicher.
Kann dies wirklich alt, Hatte das gleiche problem, ich löste es, bei Verwendung eines kürzer von E-Mail. scheint, wie die maximale Länge nach dem @ - Zeichen ist 10. das ist das, was ich bisher getestet habe.
Beispiel: