我在发送电子邮件时遇到问题,看起来我们的服务器连接到邮件服务器是不稳定的,有时它成功发送,但有时它不是,它说ssl超时。
所以我的想法是捕获超时异常并插入数据库然后我可以稍后发送。
但我需要发送一些带有catch异常的参数,这样我才能正确插入数据库。
到目前为止我想要的是这样的
try{
$message = Yii::$app->mail->compose();
if (Yii::$app->user->isGuest) {
$message->setFrom('from@domain.com');
} else {
$message->setFrom(Yii::$app->user->identity->email);
}
$message->setTo(Yii::$app->params['adminEmail'])
->setFrom(Yii::$app->params['adminEmail'])
->setTo("mymail@gmail.com")
->setSubject('Title 1')
->setHtmlBody("Hi, this is my content to check if registration email successfully sent")
->send();
$mail_from = "no-reply@myweb.com";
$mail_to = "customer@someweb.com";
$content = "here is content of email"
$other = "this other variable";
return 1;
}catch(\Swift_TransportException $e, $mail_from, $mail_to, $content, $other){
//if connection time out or something
$queue = new Queue;
$queue->mail_from = $mail_from;
$queue->mail_to = $mail_to;
$queue->content = $content;
$queue->other = $other;
$queue->fail_reason = $e->getMessage();
$queue->save()
}
但它给了我undefined variable $mail_from, $mail_to, and etc
我如何解决问题?
提前致谢。
答案 0 :(得分:0)
要解决undefined variable $mail_from, $mail_to, and etc
错误,最好在try
块之外声明变量。因为您在try
的末尾声明了变量,所以在这些变量初始化之前它就会失败。
$mail_from = "no-reply@myweb.com";
$mail_to = "customer@someweb.com";
$content = "here is content of email"
$other = "this other variable";
try {
$message = Yii::$app->mail->compose();
if (Yii::$app->user->isGuest) {
$message->setFrom('from@domain.com');
} else {
$message->setFrom(Yii::$app->user->identity->email);
}
$message->setTo(Yii::$app->params['adminEmail'])
->setFrom(Yii::$app->params['adminEmail'])
->setTo("mymail@gmail.com")
->setSubject('Title 1')
->setHtmlBody("Hi, this is my content to check if registration email successfully sent")
->send();
return 1;
} catch(\Swift_TransportException $e) {
//if connection time out or something
$queue = new Queue;
$queue->mail_from = $mail_from;
$queue->mail_to = $mail_to;
$queue->content = $content;
$queue->other = $other;
$queue->fail_reason = $e->getMessage();
$queue->save()
}
但此代码存在更多问题。您多次设置from
和to
部分。在if/else
您正在调用setFrom
,然后再过几行。 setTo
也是如此。对函数的最后一次调用将否决先前的设定值。因此,请确保只调用一次这些函数。