2

在 Silex 中捕获 SwiftMailer 的异常时,我遇到了一个很奇怪的问题。我想发送这样的电子邮件:

try {
    $message = \Swift_Message::newInstance()
        ->setSubject('subject')
        ->setFrom(array('form'))
        ->setTo(array('to'))
        ->setBody('body');
    $app['mailer']->send($message);
} catch (\Swift_TransportException $e) {
    $app['logger']->addError('Unable to send welcome email');
}

我知道它不会在 localhost 上发送任何电子邮件,我希望它会失败,但为什么我无法在块中捕获Swift_TransportException异常?try - catch

它只是打印:

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host localhost [Connection refused #61]'
4

2 回答 2

0

当您调用时,电子邮件不会立即发送send(),而是会进入在应用程序关闭期间被刷新的内存线轴,此时响应已经发送。这改善了用户体验,因为可以更快地发送响应。

于 2013-07-22T18:17:16.230 回答
0

我也无法在我的本地主机上发送邮件 - 我用这段代码摆脱了异常:

/// config
$app['swiftmailer.options'] = array(
    'host' => 'smtp.1und1.de',
    'port' => '465',
    'username' => 'xxx',
    'password' => 'yyy',
    'encryption' => 'ssl',
    'auth' => 'login',
);

// bootstrap
$app->register(new Silex\Provider\SwiftmailerServiceProvider(), array(
    'swiftmailer.options' => $app['swiftmailer.options']
));
于 2015-12-02T01:32:04.027 回答