无法使用 yii2 swiftmailer 发送邮件
Cannot send mail with yii2 swiftmailer
尝试使用 Yii::$app->mailer->compose() 函数发送邮件时出现错误。尝试连接smtp服务器时出现此错误,因此我提供错误消息和邮件程序YII2配置
Expected response code 250 but got code "535", with message "535-5.7.8
Username and Password not accepted.
Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials 59sm3639427wrc.23 -> gsmtp"
这是来自 config/common.php 文件的参数:
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'port' => '587',
'encryption' => 'tls',
'username' => 'myemailbox@yahoo.com',
'password' => 'myemailpass',
'host' => 'smtp.mail.yahoo.com',
],
],
我已经在 Yahoo 帐户设置中启用了 "Allow apps that use less secure sign in" 功能。尝试 "app password" 选项但得到相同的结果。
在使用 yahoo smtp 之前,我用 google smtp 以同样的方式进行了尝试。错误信息仍然指向 https://support.google.com 页面。 Apache 是否可以缓存登录并传递给 smtp 服务器?
当然,我查看了 google 支持页面并按照 https://accounts.google.com/DisplayUnlockCaptcha 页面中的说明进行操作。
尝试更改端口
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'port' => '465',
'encryption' => 'tls',
'username' => 'myemailbox@yahoo.com',
'password' => 'myemailpass',
'host' => 'smtp.mail.yahoo.com',
],
],
我解决了这个问题,但没有查出具体原因。也许有某种配置错误缓存。
所以我把这个直接设置放在 compose 函数之前:
\Yii::$app->mailer->setTransport([
'class' => 'Swift_SmtpTransport',
'port' => '587',
'encryption' => 'tls',
'username' => 'myemailbox@yahoo.com',
'password' => 'myemailpass',
'host' => 'smtp.mail.yahoo.com',
]);
它开始起作用了。
尝试使用 Yii::$app->mailer->compose() 函数发送邮件时出现错误。尝试连接smtp服务器时出现此错误,因此我提供错误消息和邮件程序YII2配置
Expected response code 250 but got code "535", with message "535-5.7.8
Username and Password not accepted.
Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials 59sm3639427wrc.23 -> gsmtp"
这是来自 config/common.php 文件的参数:
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'port' => '587',
'encryption' => 'tls',
'username' => 'myemailbox@yahoo.com',
'password' => 'myemailpass',
'host' => 'smtp.mail.yahoo.com',
],
],
我已经在 Yahoo 帐户设置中启用了 "Allow apps that use less secure sign in" 功能。尝试 "app password" 选项但得到相同的结果。 在使用 yahoo smtp 之前,我用 google smtp 以同样的方式进行了尝试。错误信息仍然指向 https://support.google.com 页面。 Apache 是否可以缓存登录并传递给 smtp 服务器?
当然,我查看了 google 支持页面并按照 https://accounts.google.com/DisplayUnlockCaptcha 页面中的说明进行操作。
尝试更改端口
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'port' => '465',
'encryption' => 'tls',
'username' => 'myemailbox@yahoo.com',
'password' => 'myemailpass',
'host' => 'smtp.mail.yahoo.com',
],
],
我解决了这个问题,但没有查出具体原因。也许有某种配置错误缓存。 所以我把这个直接设置放在 compose 函数之前:
\Yii::$app->mailer->setTransport([
'class' => 'Swift_SmtpTransport',
'port' => '587',
'encryption' => 'tls',
'username' => 'myemailbox@yahoo.com',
'password' => 'myemailpass',
'host' => 'smtp.mail.yahoo.com',
]);
它开始起作用了。