在 Symfony 中使用 Swiftmailer 控制 Sendmail
Control Sendmail with Swiftmailer in Symfony
以下代码适用于我正在使用的服务器 (Hosteurope WebPack):
mail('someone@example.net', 'some subject', 'sendmail is working', 'From: me@example.org', "");
以下代码不是:
$message = \Swift_Message::newInstance()
->setSubject('some subject')
->setFrom('me@example.org')
->setTo('someone@example.net')
->setBody('sendmail via swiftmail is working');
$mailer = $this->get('mailer');
$logger = new Swift_Plugins_Loggers_ArrayLogger();
$mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));
$mailer->send($message);
并且在 $logger 中写入此错误:
++ Starting Swift_Transport_SendmailTransport
<<
!! Expected response code 220 but got code "", with message "" (code: 0)"
...
我的配置是:
swiftmailer:
transport: "sendmail"
sender_address: "me@example.org"
我不明白为什么一个有效而另一个无效,因为据我所知,调用应该是相同的。
问题是 Sendmail Transport 没有发送 From Header(如预期的那样)。
使用 "mail" 作为传输对我有用:
swiftmailer:
transport: "sendmail"
sender_address: "me@example.org"
希望这可以帮助其他遇到 Hosteurope 和 sendmail/sending 邮件问题的人。
如果您在 symfony 中使用 sendmail,您可能需要传递一些额外的选项。例如:
'/usr/sbin/sendmail -t -i'
要找出必须传递哪些选项,请在您的服务器上创建一个 phpinfo.php
,
<?php
phpinfo();
>
运行 它并找到以以下内容开头的条目:
sendmail_from
sendmail_path
其中任何一个都会显示 /usr/sbin/sendmail -some_options
为了让它在 symfony 中工作,你不能将它直接粘贴到 config.yml
- 至少以我的经验。
打开 services.yml
并添加:
swiftmailer.mailer.default.transport:
class: Swift_SendmailTransport
arguments: ['/usr/sbin/sendmail -t -i']
其中 arguments
是上面 php 条目的路径。
然后将config.yml
设置为:
swiftmailer:
transport: sendmail
或者,如果您喜欢将 dev 和 prod env 分开,请将其粘贴到其中一个。
以下代码适用于我正在使用的服务器 (Hosteurope WebPack):
mail('someone@example.net', 'some subject', 'sendmail is working', 'From: me@example.org', "");
以下代码不是:
$message = \Swift_Message::newInstance()
->setSubject('some subject')
->setFrom('me@example.org')
->setTo('someone@example.net')
->setBody('sendmail via swiftmail is working');
$mailer = $this->get('mailer');
$logger = new Swift_Plugins_Loggers_ArrayLogger();
$mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));
$mailer->send($message);
并且在 $logger 中写入此错误:
++ Starting Swift_Transport_SendmailTransport
<<
!! Expected response code 220 but got code "", with message "" (code: 0)"
...
我的配置是:
swiftmailer:
transport: "sendmail"
sender_address: "me@example.org"
我不明白为什么一个有效而另一个无效,因为据我所知,调用应该是相同的。
问题是 Sendmail Transport 没有发送 From Header(如预期的那样)。 使用 "mail" 作为传输对我有用:
swiftmailer:
transport: "sendmail"
sender_address: "me@example.org"
希望这可以帮助其他遇到 Hosteurope 和 sendmail/sending 邮件问题的人。
如果您在 symfony 中使用 sendmail,您可能需要传递一些额外的选项。例如:
'/usr/sbin/sendmail -t -i'
要找出必须传递哪些选项,请在您的服务器上创建一个 phpinfo.php
,
<?php
phpinfo();
>
运行 它并找到以以下内容开头的条目:
sendmail_from
sendmail_path
其中任何一个都会显示 /usr/sbin/sendmail -some_options
为了让它在 symfony 中工作,你不能将它直接粘贴到 config.yml
- 至少以我的经验。
打开 services.yml
并添加:
swiftmailer.mailer.default.transport:
class: Swift_SendmailTransport
arguments: ['/usr/sbin/sendmail -t -i']
其中 arguments
是上面 php 条目的路径。
然后将config.yml
设置为:
swiftmailer:
transport: sendmail
或者,如果您喜欢将 dev 和 prod env 分开,请将其粘贴到其中一个。