本教程详细记录了Laravel8配置QQ邮箱进行邮件的过程,因为Laravel个版本对邮件发送没有过大的改动,因此本教程也适用于Laravel6-7版本。

一,配置QQ邮箱

首先登陆QQ邮箱,找到“设置”-“账户”页面,向下拉动页面,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”配置:

开启“POP/SMTP服务”,这一步会要求你用绑定的手机发送一条短信到相应的号码来进行验证,验证通过后生成授权码,这个授权码用来保护我们的邮箱密码,稍后会用到。

如果需要保存发信记录,那么还要勾选“SMTP发信后保存到服务器”配置。

到此QQ邮箱的SMTP服务已配置完毕。

二,配置Laravel

Laravel 的 email 服务可以通过 mail 配置文件进行配置,我们打开“config/mail.php”文件发现都是使用了env配置,所以我们最终使用.env文件进行配置,打开.env文件,按照如下配置:

MAIL_MAILER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=登录QQ邮箱使用的QQ号码
MAIL_PASSWORD=步骤1中提到的授权码
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=QQ邮箱
MAIL_FROM_NAME="${APP_NAME}"

MAIL_MAILER:邮件驱动方式,我们使用smtp。

MAIL_HOST:邮箱所在主机,QQ邮箱为smtp.qq.com。

MAIL_PORT:邮箱发送邮件端口,QQ邮箱有两个,分别是25和465,25用于普通发送方式,465用于https加密方式,这里我们设置为465,使用https加密发送邮件。

MAIL_USERNAME:登录QQ邮箱用到的QQ号码。

MAIL_PASSWORD:步骤1中获取到的授权码

MAIL_ENCRYPTION:加密方式,null表示不使用任何加密,也可以设置为tls或ssl,我们这里设置为ssl,表示进行https加密。

MAIL_FROM_ADDRESS:发送邮件的地址,写QQ邮箱就可以了,示例:123456@qq.com。

到此完成Laravel8配置QQ邮箱进行邮件发送,接下来就可以编写业务代码了,假如你使用Laravel jetstream开启了邮件验证,那么现在已经可以发送和接受验证邮件了。

三,可能遇到的问题及解决方案

1.Laravel配置QQ邮箱发送Email提示:Connection to smtp.qq.com:465 Timed Out错误

2.Laravel配置QQ邮箱提示:Failed to authenticate on SMTP server with username “xxxxxx” using 1 possible authenticators. Authenticator LOGIN returned Expected response code 235 but got code “535”, with message “535 Login Fail. Please enter your authorization code to login错误

3.Laravel配置QQ邮箱发送Email提示:Cannot send message without a sender address错误