php - Silex + Swift Mailer 不工作

标签 php swiftmailer silex mandrill

我有一个带有 Swift Mailer 的 Silex 应用程序,但似乎没有从 $app['swiftmailer.options'] 加载配置。

我在我的 Bootstrap 文件中注册了该服务

$app->register(new SwiftmailerServiceProvider());

在我的配置文件中

$app['swiftmailer.options'] = array(
    'host' => 'smtp.mandrillapp.com',
    'port' => '587',
    'username' => 'MY_USERNAME',
    'password' => 'MY_PASSWORD',
    'encryption' => null,
    'auth_mode' => null
);

然后我发送我的电子邮件

$message = \Swift_Message::newInstance()
    ->setSubject($this->app['forum_name'] . ' Account Verification')
    ->setFrom(array('no-reply@domain.com'))
    ->setTo(array('recipient@example.com'))
    ->setBody('My email content')
    ->setContentType("text/html");

$this->app['mailer']->send($message);

发送函数返回 1 但电子邮件从未发送过。但是,当我尝试手动创建 Swift_SmtpTransport 实例时,电子邮件会发送。

$transport = \Swift_SmtpTransport::newInstance('smtp.mandrillapp.com', 587)
    ->setUsername('MY_USERNAME')
    ->setPassword('MY_PASSWORD');
...
$mailer = \Swift_Mailer::newInstance($transport);
$mailer->send($message);

所以问题是 $app['swiftmailer.options'] 没有被读取或加载。我在这里遗漏了什么吗?

我正在按照 here 中的说明进行操作.

最佳答案

默认情况下,SwiftmailerServiceProvider 使用假脱机传输来排队电子邮件,并在 TERMINATE 阶段(在将响应发送回客户端之后)将它们全部发送出去。如果您不调用 Application->run(),您将绕过此过程。您的邮件将留在假脱机中,永远不会发送。

如果您想在正常的 Silex 流程之外发送邮件,您可以使用以下命令手动冲洗阀芯

if ($app['mailer.initialized']) {
    $app['swiftmailer.spooltransport']
        ->getSpool()
        ->flushQueue($app['swiftmailer.transport']);
}

这直接取自 SwiftmailerServiceProvider。

或者你可以简单地关闭假脱机

$app['swiftmailer.use_spool'] = false;

关于php - Silex + Swift Mailer 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28719472/

相关文章:

doctrine - Silex 无法插入数据库

javascript - 从本地访问我网站上的图像

php - 根据数据库中的数据自动调整文本框的大小

laravel - 无法与主机邮件 trap.io 建立连接 [权限被拒绝 #13]

php - 未捕获的异常 'Swift_TransportException',消息为 'Connection could not be established with host smtp.gmail.com [Connection timed out #110]'

php - 是否可以将 EventSubscribers 与 Silex 一起使用?

php - "use"和将参数传递给 Controller ​​函数之间的区别

php - 即使设置了 UTF-8 编码,在浏览器中显示俄文字母的问题

php - 如何排除当月的前几个月?

php - Laravel SSL 读取操作超时 | swift _IoException | PHP错误?