我在使用Yii发送电子邮件时出现问题,问题是有时会导致ssl超时,但有时邮件发送顺利。
错误说的是这样的
Swift_TransportException
Connection to ssl://in-v3.mailjet.com:465 Timed Out
这是错误图片
阅读一些文章之后,看起来因为socket超时所以它应该再次启动套接字。
这是我读过的文章。
swiftmailer and Yii2 not working 1 out of 10 time
How to close Smtp connection in SwiftMailer
以下是common\config\main-local.php
'mail' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@backend/mail',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'in-v3.mailjet.com',
'username' => 'myUserName',
'password' => 'myS3cr3tP4ss',
'port' => '465',
'encryption' => 'ssl',
],
],
以下是我在控制器中发送电子邮件的方式
$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($model->email)
->setSubject('Reset Password')
->setHtmlBody($this->renderAjax('//email/_content',['content' => 'email content goes here']))
->send();
return $this->render('confirmation_sent');
如何停止并开始与上述代码建立连接?
我已将此代码准确地放在$message
if (Yii::$app->mailer->getTransport()->isStarted()) {
Yii::$app->mailer->getTransport()->stop();
}
Yii::$app->mailer->getTransport()->start();
但有时它仍显示SSL time out
。
我向mailjet询问此问题,并得到了此回复
Hi, Thank you for your reply.
Ok, please try with port 443 with SSL or: 25,80, 2525 with no encryption, 587 and 588 with TLS.
Let me know if it works.
已经尝试使用给定加密的所有端口,但它保持不变,有时我遇到Timed Out
已更新
使用try catch有时会给我Failed to authenticate on SMTP server with username "a3027c30a1c1f6f60d2f9d7813360b46" using 3 possible authenticators1
。
使用try catch也会给我Connection to ssl://in-v3.mailjet.com:465 Timed Out
,它会显示出来。
这是我从服务器到mailjet的traceroute
traceroute to in-v3.mailjet.com (37.59.74.234), 30 hops max, 60 byte packets
1 gateway (123.231.250.129) 1.084 ms 1.114 ms 3.485 ms
2 36.37.76.84 (36.37.76.84) 17.495 ms 17.497 ms 36.37.76.70 (36.37.76.70) 1 7.215 ms
3 36.37.77.68 (36.37.77.68) 30.878 ms 36.37.77.14 (36.37.77.14) 30.322 ms 3 2.661 ms
4 36.37.77.39 (36.37.77.39) 33.103 ms * *
5 * * *
6 * * *
7 * * gblx.as3549.ny.us (213.251.130.102) 362.627 ms
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
这是因为不同Yii::$app->mailer
开始停止套接字而Yii::$app->mail
是否发送电子邮件?
我是否正确这些错误,因为ssl socket已停止?请解释一下这个错误是怎么出现的。
提前致谢。
答案 0 :(得分:0)
您遇到错误,因为它无法连接到smtp并且尝试的时间结束了。尝试更改端口和加密,也许这会对你有帮助,但我不确定。这取决于你的n-v3.mailjet.com,他需要什么设置,我不知道。
'mail' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@backend/mail',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'in-v3.mailjet.com',
'username' => 'myUserName',
'password' => 'myS3cr3tP4ss',
'port' => '587',
'encryption' => 'ssl',
],
],