以qq邮箱为例,非企业邮箱需要开启POP3和SMTP服务(QQ邮箱登录=》选择设置=》账户)
开启后需要给腾讯发个短信(很无聊),之后就会生成下面的东西
配置.env文件
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=********@qq.com
MAIL_PASSWORD=qq邮箱此处填写上图产生的授权码
MAIL_FROM_NAME=邮箱的名称
MAIL_ENCRYPTION=ssl
配置laravel config/mail.php文件
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:邮箱所在主机,使用163邮箱,对应值是smtp.163.com,使用QQ邮箱,对应值是smtp.qq.com。使用腾讯企业邮箱,对应值是smtp.exmail.qq.com
port:用于配置邮箱发送服务端口号,一般默认值是25,但如果设置SMTP使用SSL加密,该值为465。
from:配置项包含address和name,前者表示你自己的邮箱,后者表示你邮件用户名(这里邮箱,是用来发邮件的邮箱)。
encryption:表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls或ssl。
username: 表示邮箱账号,比如123456789@qq.com
password 表示上述邮箱登录对应登录密码。注意QQ邮箱的话应该开启POP3|SMTP服务时给的授权码。
sendmail: 是在设置driver为sendmail时使用,用于指定sendmail命令路径。
pretend: 用于配置是否将邮件发送记录到日志中,默认为false则发送邮件不记录日志,如果为true的话只记录日志不发送邮件,这一配置在本地开发中调试时很有用
在app/Http/Controllers生成了一个MailController控制器
<?php
namespace App\Http\Controllers;
use Mail;
class MailController{
public function send() {
$name = '我发的第一份邮件';
// Mail::send()的返回值为空,所以可以其他方法进行判断
Mail::send('emails.test',['name'=>$name],function($message){
$to = '109*****@qq.com';
$message ->to($to)->subject('邮件测试');
});
// 返回的一个错误数组,利用此可以判断是否发送成功
dd(Mail::failures());
}
}
Mail::send();需要传三个参数,第一个为引用的模板,第二个为给模板传递的变量(邮箱发送的文本内容),第三个为一个闭包,参数绑定Mail类的一个实例。
最后 在resources\views\emails下创建一个模板文件
{{$name}} hello world。
简单的发送邮件就弄好了