SwiftMailer不发送邮件,为什么?

PiT*_*ber 9 php email swiftmailer

SwiftMail不会发送我的电子邮件,但mail()确实有效.和这里一样.

我添加了EchoLogger,但它没有打印任何东西.

$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);
Run Code Online (Sandbox Code Playgroud)

电子邮件已退回$failures但为什么?

更新

Swift_Transport_SimpleMailInvoker::mail我抛弃参数并得到这个:

  $headers =>
  string(208) "Message-ID: <1337173064.4fb3a4480b8dd@domain.de>
Date: Wed, 16 May 2012 14:57:44 +0200
From: news@domain.de
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
"
  $extraParams =>
  string(15) "-fnews@domain.de"
Run Code Online (Sandbox Code Playgroud)

$to, $subject, $body和我用过的一样mail().仍然不知道问题是什么.

更新#2

这对我很好:

mail($email, 'Test', $nl_text, "From: " . ABSENDER);
Run Code Online (Sandbox Code Playgroud)

免责声明:这不是解决方案,而是我使用的解决方法,因为我没有时间调试框架并找到真正的解决方案.您可以随意使用上面提供的信息来调试自己并在此处发布您的解决方案.我很乐意接受并赞成它.

Ale*_*lex 8

我建议你使用调试器并逐步完成send()后面的代码.

如果你不能使用调试器,你应该看看该功能maillib/classes/Swift/Transport/SimpleMailInvoker.php.有一个关闭运算符('@')调用内部邮件功能.也许删除此运算符可以显示错误消息.您也可以使用var_dump()转储那里传递的参数.


Kut*_*PHP 6

我能够解决它.我在标题中使用了noReply@mydomain.com,并且未创建此电子邮件帐户.我创建了noReply@mydomain.com,我的电子邮件开始工作了.我希望这有助于某人.


VaL*_*VaL 6

我有同样的问题.

根据文档swiftmailer.org默认情况下Swift_MailTransport :: newInstance()使用参数-f%s,这就是为什么你"-fnews@domain.de"要解决那个地方之间的空白-f %s.

你的代码现在看起来像那样: $message = Swift_Message::newInstance('-f %s');

我只是传递null给__construct()解决了这个问题.所以我的工作代码看起来像这样:

$message = Swift_Message::newInstance(null);

我希望它能帮助别人.

PS我使用Postfix发送电子邮件.