在我的Yii2应用程序中,我有一个用swift发送电子邮件的联系表单。
我已经以这种方式配置了我的应用程序:
这些是web.php中的配置:
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'authsmtp.myhost.com',
'username' => 'username',
'password' => '************',
'port' => '25',
'encryption' => 'tls',
],
],
这是我发送邮件的控制器的一部分:
if($contact->load($post) && $contact->validate())
{
Yii::$app->mailer->compose('request',['contact' => $contact ])
->setFrom('mail1@mail.it')
->setTo('mail2@mail.it')
->setSubject('This is a test email')
->send();
return $this->redirect(['login/index']);
}
我收到一个包含此错误的Swift_TransportException:
预期的响应代码220,但代码为“500”,消息“500 5.5.1命令无法识别”
有没有办法检索有关swift生成的错误的更多信息? 这条消息太笼统了。 提前感谢所有帮助
答案 0 :(得分:2)
使用yii\swiftmailer\Logger
进行日志记录:
Logger是一个SwiftMailer插件,它允许将SwiftMailer内部日志传递给Yii日志记录机制。每个本机SwiftMailer日志消息都将转换为Yii'info'日志条目。
使用SSL / TLS的SMTP端口为465或587,没有的端口为25。来自Wikipedia page on SMTP:
默认情况下,SMTP使用TCP端口25.邮件提交的协议相同,但使用端口587.由SSL保护的SMTP连接(称为SMTPS)默认为端口465(非标准,但有时用于遗留原因)。
除非您的服务器已明确设置为使用带有SSL / TLS的端口25,否则不应使用加密。