我目前正在尝试让Symfony2 / Swiftmailer通过邮件发送已提交表单的内容。我的parameters.yml包含以下内容:
mailer_transport: sendmail
mailer_host: ~
mailer_user: ~
mailer_password: ~
由于我的服务器上的sendmail版本不支持-bs
选项,默认情况下Swiftmailer似乎使用该选项,因此我必须找到一种方法来告诉Symfony2 / Swiftmailer使用sendmail -t
。 Swift_Transport_SendmailTransport
似乎支持这一点,但似乎没有相应的SwiftmailerBundle配置选项。
如何告诉Swiftmailer使用sendmail -t
(最好通过配置)?
编辑2:目前,我正在使用
$message = \Swift_Message::newInstance()
[…];
$transport = $this->get('swiftmailer.mailer.default.transport.real');
if ($transport instanceof \Swift_Transport_SendmailTransport) {
$transport->setCommand('/usr/sbin/sendmail -t');
}
$this->get('mailer')->send($message);
我仍然想知道是否有更好的方法来做到这一点。
答案 0 :(得分:8)
就这个问题花了一天时间。
我更喜欢使用直接配置来做这种事情,我发现这可行:
# app/config/services.yml
services:
swiftmailer.mailer.default.transport:
class: Swift_SendmailTransport
arguments: ['/usr/sbin/sendmail -t']
答案 1 :(得分:7)
此配置应该有效。
mailer_transport: sendmail
mailer_host: /usr/bin/sendmail # wherever your mail is
#mailer_user: ~
#mailer_password: ~
如果仍有问题,
A. check who are sending mail to someone@wxy.com
1. console - check your permission to access sendmail
2. web - check web user like wwww-data can access sendmail
B. check your mail log /var/log/maillog
When Symfony Swiftmailer send,
1. mail log has not been processed, then PHP side problem.
2. else if: send to outlook
it is TLS handshake problem, it might be from outlook tls handshake.
FYI, sendmail TLS is not working with outlook well.
add next line to /etc/mail/access
Try_TLS:wxy.com NO
3. else:
Sorry, google with mail log error messages again .
答案 2 :(得分:2)
我正在寻找和你一样的东西,我发现现在有一个SendMailTransport类。
以下是文档:http://swiftmailer.org/docs/sending.html#using-the-sendmail-transport