使用laravel框架发送Email问题总结

作者:袖梨 2022-06-25

前段时间,公司有一些出报表的任务,无可厚非要是实现一个自动按天或者按月发送报表到指定邮箱确实就是一件爽歪歪的事情,免得每天都有人来让你查数据,苦、逼、类、烦。

下面就laravel框架发送邮件所躺过的坑点记录下来,希望对有相同开发需求的猿类们有所帮助,以免重复掉坑。

1.1 laravel发送邮件涉及的配置文件

.env
/config/mail.php

以上是laravel发送邮件两个配置的地方,默认使用composer生成项目的时候,自动生成.env文件里会有邮箱的配置字段,如下:

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

以上这个几个字段在mail.php文件中都有对应的字段,如果部署上线,仅仅配置了mail.php而没有改.env文件里的配置(除非没有.env),那么邮箱是发送不成功的,因为.env文件会覆盖mail.php文件字段,切记小心。

1.2 使用QQ邮箱smtp发送邮件问题

1.2.1 开启QQ邮箱smtp和imap功能

在使用这个QQ邮箱发送之前你需要在所要发送邮箱的后台开启smtp和imap发送邮箱授权功能,否则将一直提示你没有授权。设置位置,直接上图:

ps://dailyios.oss-cn-shenzhen.aliyuncs.com/86270abfdc3fd1f5e21c.jpg" />

 

至少你需要把POP3/SMTP服务开启,不然发邮件那是天方夜谭啊。

开启后,你还需要点击下方的:“生成授权码”,获取一个能够登录的动态密码:

千万千万千万记得,MAIL_PASSWORD填写的并非是发送邮箱的账号密码,而是到腾讯邮箱管理中心授权的动态密码!!!

加密方式建议选择选择ssl保证数据安全,那么最终.env邮件长这样:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=[你的账号]
MAIL_PASSWORD=gzoyimtltnqsbdba
MAIL_ENCRYPTION=ssl
mail.php配置文件中,你仅仅需要修改from字段:

return [
    'from' => ['address' => [MAIL_USERNAME], 'name' => '小王']
]

然后你就可以愉快大发邮件啦:

5.2 发送邮件方式
Mail::send('mail.index', [], function ($message) { $message->to(['[email protected]'])->subject('公司未婚妹子数量报表统计');});
从5.3开始,发送邮件被抽象成了一个对象,如果使用laravel 5.3尝鲜的

相关文章

精彩推荐