laravel发送邮件失败会报错吗?

用laravel(6.x)自带的邮件功能发送邮件,输入一个不存在的邮箱,发送邮件, 主邮箱收到了邮件退信通知,代码中并没有报错?
一般来说收到退信通知的邮件,代码中会不会也报错?

阅读 2.2k
2 个回答
一般来说收到退信通知的邮件,代码中会不会也报错?

当然,这就跟你在以 QQ 邮箱为例,即使你填了一个不存在的邮箱地址,在你点击发送按钮后的那一刻,你都能看到这个页面。

image.png

这就相当于你在代码中调用了发送邮件。

image.png

在这个阶段,就是邮件服务商接收到了你的递送请求,就好比你去邮局寄信,这个阶段只是你把信给到了邮递员。

而验证收件人是否存在,就只有等邮递员把这封信送达到目的地址的时候,才能知道这个收件人是否存在。

在这期间,你和邮递员不可能只为你这一封信等待,他还要接受别人的寄信请求,他能做的就是在若干天后,如果没有妥投,就退回来,通知你这封信的收件人不存在或者因为其他原因未能妥投。

那这个通知因为是“异步”的,你自然不会知道,但是你的邮箱是会知道了,会有一封邮件(退信通知)回给你,如果你现在要找个结果,那就可以用 IMAP 协议,去定时扫描你的邮箱,获取新邮件,从而进行判断。

😅本来还想看看 QQ 邮箱的退信通知是什么样子的,结果过了一个小时了,还是在投递中。


时隔几个小时,收到了来自 PostMaster#qq.com 的退信邮件,原文在附件中。

如前面所说,你可以通过使用 IMAP 协议去定时拉取邮件,来收集退信信息。

image.png

程序代码只能知道执行过程中的错误。

SMTP协议,是 TCP/TEXTPLAIN协议。使用telnet就可以模拟过程。

比如:

> telnet smtp.qq.com 25
< 220 xxxxx XMail Smtp QQ Mail Server
> EHLO LOGIN
< 250 xxxx
< 250 xxxx
< 250 xxxx
> AUTH LOGIN
> xxxxx
< 235 Login Success
  • 连接smtp服务器
  • 发送EHLO消息
  • 服务端返回250开头信息,表示正常,程序继续
  • 发送AUTH消息
  • 发送用户名密码
  • 服务端返回235开头,表示正常,程序继续,否则表示用户名密码错误
  • 发送quit退出

一次发送邮件的过程就是各种命令的交互。当程序发送邮件时,对方服务器最终返回250,那就表示对方已经接收了这封邮件。至于退信,是在【程序【正确】发送后】的对方服务器的后续处理逻辑,并不在发送邮件这个过程中,所以,是不会报错的。

程序报错只会在连接对方服务器失败、用户名密码错误、发送过程失败(网络不稳定等情况)。

参考链接:
https://blog.csdn.net/okfang6...
https://cloud.tencent.com/dev...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题