配置Symfony2 / Swiftmailer使用“sendmail -t”

时间:2013-09-23 12:12:17

标签: symfony swiftmailer

我目前正在尝试让Symfony2 / Swiftmailer通过邮件发送已提交表单的内容。我的parameters.yml包含以下内容:

mailer_transport: sendmail
mailer_host: ~
mailer_user: ~
mailer_password: ~

由于我的服务器上的sendmail版本不支持-bs选项,默认情况下Swiftmailer似乎使用该选项,因此我必须找到一种方法来告诉Symfony2 / Swiftmailer使用sendmail -tSwift_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);

我仍然想知道是否有更好的方法来做到这一点。

3 个答案:

答案 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