如何从 yii2 symfonymailer 获取错误消息

问题描述 投票:0回答:1

我正在使用 Yii2 使用 yii2-symfonymailer 发送电子邮件。

如果出现错误,它会从

false
方法返回
send()
,这样我就可以检查 sendind 是否成功。

我的问题是: 发送失败时如何获取错误消息?

这是发送代码。

$message = Yii::$app->mailer->compose()
    ->setFrom('[email protected]')
    ->setTo('[email protected]')
    ->setSubject('Message subject')
    ->setTextBody('Plain text content')
    ->setHtmlBody('<b>HTML content</b>');

if (!$message->send()) {
  // handle the errors
}

为了调试,我需要一种方法来获取来自 send() 方法的错误信息的异常,就像在 php 邮件程序中一样(https://stackoverflow.com/a/2386576/2377961)。

或者一种“询问”邮件程序有关“lastErrors”的方法,例如像这样:

if (!$message->send()) {
  echo "Could not send: " . Yii::$app->mailer->getLastError();
}

我在另一个 yii2 邮件程序中发现了类似的问题(请参阅 Yii 2 的基本邮件程序中返回错误)。

但这不适用于我的邮件程序,并且无法更改邮件程序。

php email yii2 symfony-mailer
1个回答
0
投票

$message->send()
返回
false
时,尝试从邮件程序获取最后一个错误是没有意义的。

这是因为当邮件程序本身发送失败时,

$message->send()
永远不会返回 false。成功时它将返回
true
,失败时会抛出异常。

参见

sendMessage()
邮件程序中的功能实现

$message->send()
方法返回
false
的唯一情况是当
beforeSend()
回调返回
false
时。只有在
yii\mail\MailEvent::$isValid
事件期间将
yii\mail\BaseMailer::EVENT_BEFORE_SEND
属性设置为 false 时才会发生这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.