我使用Laravel建立了一个网站,该网站使用电子邮件通知用户某些事情。为了在我的个人计算机上进行测试,我使用了我的gmail帐户从te网站发送电子邮件,效果很好。现在,我想为公众启动该网站,对于最终版本,我希望它使用noreply @ mydomain发送电子邮件而不是我的gmail地址。
因此,我已经在.env
文件中设置了环境变量,如下所示:
MAIL_DRIVER=smtp
MAIL_HOST=mail1.webyte.eu
MAIL_PORT=587
MAIL_USERNAME=noreply@mydomain
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
我的托管服务人员告诉我,这应该是正确的,但是,当我尝试这样做时,出现以下错误:
Swift_TransportException(503)预期的响应代码354,但是得到了代码 消息为“ 503”的“ 503”-拒绝了所有RCPT命令 错误:不允许503中继,需要认证503有效RCPT 命令必须在DATA之前>
我已经在互联网上搜索了几天,却找不到适合我的东西...
有人知道我应该在这里做什么吗?谢谢!
答案 0 :(得分:1)
我通过更改来解决:
MAIL_DRIVER =发送邮件
答案 1 :(得分:0)
某些服务器具有详细信息设置。例如,对于我在namecheap上的服务器,我需要在.env文件中添加这些vars
MAIL_FROM_ADDRESS = noreply @ mydomain
MAIL_FROM_NAME =否回复
答案 2 :(得分:0)
我还通过在.env
文件中添加以下内容来解决此错误:
MAIL_DRIVER=sendmail
答案 3 :(得分:0)
此错误是由您的SMTP电子邮件服务提供商引起的。 Laravel使用 SwiftMailer 发送电子邮件。因此,您可以使用以下方法捕获错误
try {
Mail::send('emails.contact-message', [
'msg' => $request->body,
'name' => $request->name,
'email' => $request->email,
],
function ($mail) use($request) {
$mail->from($request->email, $request->name);
$mail->to('support@domain.com')->subject('Contact Message');
}
);
// Catch the error
} catch(\Swift_TransportException $e){
if($e->getMessage()) {
dd($e->getMessage());
}
}