无法在Windows上使sendmail与Swiftmailer Bundle一起使用

时间:2019-02-22 14:40:20

标签: php windows symfony sendmail swiftmailer

我有以下设置/参数:

  • PHP 7.1.26
  • Windows 10 x64专业版
  • symfony / swiftmailer-bundle 3.5.2
  • symfony /控制台4.1.11

我想配置swiftmailer-bundle使用fake sendmail,它安装在

C:\Program Files (x86)\sendmail

虽然我已经在PHP中配置了sendmail_path,但是swiftmailer-bundle实际上根本没有使用此PHP变量。而是将sendmail可执行文件的路径默认为

/usr/sbin/sendmail -bs

但是,从3.0.4版开始,路径(即complete命令)应该是可配置的:https://github.com/symfony/swiftmailer-bundle/pull/185

我放

swiftmailer:
    mailers:
        default:
            transport: sendmail
            command: 'C:\Program Files (x86)\sendmail\sendmail.exe -t'

进入我的app/config/config.yml并重建缓存。但是,当我想通过

发送测试电子邮件时
swiftmailer:email:send

它仍然使用默认命令-当然会失败

[Swift_TransportException]
Process could not be started [The system cannot find the specified path.]

我不确定我还能尝试什么。我真的很想在本地环境中使用伪造的sendmail设置,因为sendmail可以配置为强制将任何电子邮件发送到特定地址(我的地址)进行测试,并且始终使用特定的SMTP。

这是debug:config swiftmailer的输出:

swiftmailer:
    default_mailer: default
    mailers:
        default:
            transport: sendmail
            host: 127.0.0.1
            username: null
            password: null
            port: 25
            encryption: null
            command: 'C:\Program Files (x86)\sendmail\sendmail.exe -t'
            url: null
            timeout: 30
            source_ip: null
            local_domain: null
            auth_mode: null
            delivery_addresses: {  }
            logging: false
            delivery_whitelist: {  }

1 个答案:

答案 0 :(得分:0)

update 在github上发现的一个未解决问题:https://github.com/symfony/swiftmailer-bundle/issues/244

所以这是很难的方法。但是,请在您的swiftmailer.yaml中尝试以下方法:

swiftmailer:
    default_mailer: default
    mailers:
        default:
            transport: sendmail
            command: '%env(SENDMAIL_COMMAND)%'
            timeout: 20

并在.env文件中添加新的env变量:

SENDMAIL_COMMAND='C:\Program Files (x86)\sendmail\sendmail.exe -t'

这是在调试第96行的SwiftmailerExtension.php文件期间发现的,您可以找到它,如果女巫语句可以帮助您理解其工作原理