laravel自带的SMTP邮件配置问题
laravel框架开发的网站在用户以邮箱注册登录时遇到一个邮箱配置问题。
一、由于本人在国外,因此这次开发采用微软的邮箱。微软邮箱账号,outlook、http://live.cn、hotmail 都包括在内。
二、设置outlook邮箱,选择pop是,允许删除。

登录网址 https://account.microsoft.com/security,点击【高级安全选项】,验证“Microsoft 帐户安全代码”,从邮箱中获取六位验证码后输入到网页端验证通过。
这个安全代码不用记录。

三、设置双重验证
此时需要添加双重验证。

双重验证这里我们点击下一步,可能有如下两种情况:
- 用在什么移动设备上,选择“其他”再点击“下一步”
- 如果是要求“获取 Microsoft autherticator应用用于电话”也点击“取消”。
无论上面哪种情况最后都看到“使用应用密码设置你的智能手机”这个页面,点击“下一步”,点击“完成”,此时完成双重验证。


三、进入宝塔面板找到laravel框架开发的网站里.env
配置.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.office365.com
MAIL_PORT=587
MAIL_USERNAME=登录账号
MAIL_PASSWORD=登录密码(这里很关键,需要输入以上的应用密码即授权码)
MAIL_ENCRYPTION=TLS
MAIL_FROM_ADDRESS=登录账号
MAIL_FROM_NAME=自定义
四、配置laravel config/mail.php文件 [1]
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.office365.com'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
],
'driver' => env('MAIL_DRIVER', 'smtp'), //确定这里是使用 smtp驱动 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', '123456@outlook.com'), //来源地址 'name' => env('MAIL_FROM_NAME', 自定义''), //来源人名称 ], driver:用于配置默认的邮件发送驱动,Laravel支持多种邮件驱动方式,包括smtp、Mailgun、Maildrill、Amazon SES、mail和sendmail,Mailgun和Amazon SES都是收费的Maildrill目前不支持中国区用户,这三个都是第三方邮件服务。mail驱动使用PHP提供的mail函数发送,sendmail驱动通过Sendmail/Postfix(Linux)提供的命令发送邮件,smtp驱动通过支持ESMTP的SMTP发送邮件。就目前状况来看,使用smtp是最明智的选择,mail不安全,sendmail需要安装配置Sendmail/Postfix,其他要么付费要么不能用。
host:邮箱所在主机,使用outlook邮箱,主机是:smtp.office365.com
port:用于配置邮箱发送服务端口号,如果设置SMTP使用SSL加密,该值为465。
from:配置项包含address和name,前者表示你自己的邮箱,后者表示你邮件用户名(这里邮箱,是用来发邮件的邮箱)。
encryption:表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls或ssl。(hotmali,outlook邮箱选择tls)MAIL_ENCRYPTION=TLS
username: 表示邮箱账号,比如123456789@outlook.com
password 表示上述邮箱登录对应登录密码。163邮箱的话应开启POP3|SMTP服务时给的授权码。
sendmail: 是在设置driver为sendmail时使用,用于指定sendmail命令路径。
pretend: 用于配置是否将邮件发送记录到日志中,默认为false则发送邮件不记录日志,如果为true的话只记录日志不发送邮件,这一配置在本地开发中调试时很有用.[2]
五、通过Mail类的send()方法,或者IlluminateContractsMailMailer类的send()方法进行发送邮件
这里不用管它,会默认采用Mlail类的方式发送。
六、【电邮测试】点击“发送电子邮件”测试一下看看能否收到。
如果显示发送成功,再去前台询盘表单页面测试,如果能收到邮件就说明上述设置成功了。

资料:
Hotmail:
POP3服务器地址:http://pop3.live.com (tls: 995)
SMTP服务器地址:http://smtp.live.com (tls: 25/587)
Gmail邮箱
POP3:http://pop.gmail.com (SSL/TLS:995)
SMTP:http://smtp.gmail.com (SSL/TLS:465/587)
IMAP: http://imap.gmail.com (SSL/TLS:993)
网易@http://yeah.net邮箱:
POP3: http://pop.yeah.net;
SMTP: http://smtp.yeah.net