您的位置:首页 > 编程语言 > PHP开发

Laravel 发送邮件(最简单的讲解!)

2016-08-19 11:06 197 查看
Laravel集成了SwiftMailer库进行邮件发送邮件配置文件位于
config/mail.php
:、

return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => null, 'name' => null],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
]

  以上的参数  我们都会有详细的讲解!  请继续往下看!

driver
用于配置默认的邮件发送驱动,Laravel支持多种邮件驱动方式,包括
smtp
Mailgun
Maildrill
Amazon SES
mail
sendmail
,Mailgun和Amazon
SES都是收费的,Maildrill目前不支持中国区用户,这三个都是第三方邮件服务。
mail
驱动使用PHP提供的
mail
函数发送,
sendmail
驱动通过Sendmail/Postfix(Linux)提供的命令发送邮件,
smtp
驱动通过支持ESMTP的SMTP发送邮件。

注:ESMTP即Extended SMTP, 是对标准 SMTP 协议进行的扩展,它与 SMTP 服务的区别仅仅是,使用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时,服务器会要求用户提供用户名和密码以便验证身份。

就目前状况来看,使用
smtp
是最明智的选择,
mail
不安全,
sendmail
需要安装配置Sendmail/Postfix,其他要么付费要么不能用(汗!)。下面其它配置的说明都基于
driver
smtp


接下来其他的配置都好理解,
host
是邮箱所在主机,比如我们使用163邮箱,对应值是
smtp.163.com
,使用QQ邮箱的话,对应值是
smtp.qq.com


port
用于配置邮箱发送服务端口号,比如一般默认值是
25
,但如果设置SMTP使用SSL加密,该值为
465


from
配置项包含
address
name
,前者表示发送邮箱,后者表示发送邮件使用的用户名。

encryption
表示加密类型,可以设置为
null
表示不使用任何加密,也可以设置为
tls
/
ssl


username
表示邮箱账号,比如yaojinbu@163.com

password
表示上述邮箱登录对应登录密码。

sendmail
是在设置
driver
sendmail
时使用,用于指定
sendmail
命令路径。

pretend
用于配置是否将邮件发送记录到日志中,默认为
false
则发送邮件不记录日志,如果为
true
的话只记录日志不发送邮件,这一配置在本地开发中调试时很有用。

 // 接下来我们要做的就是要在控制器写代码了!

use Mail;

在方法中需要写以下!

public function send()
{
$name = '学院君';
$flag = Mail::send('emails.test',['name'=>$name],function($message){
$to = '1072155122@qq.com';
$message ->to($to)->subject('测试邮件');
});
if($flag){
echo '发送邮件成功,请查收!';
}else{
echo '发送邮件失败,请重试!';
}
}
//
Mail::send
需要传递三个参数,第一个是邮件视图,第二个是传入视图的数据,第三个是一个闭包,该闭包中定义了收件人、抄送人(如果有的话)、邮件主题、附件等信息。邮件的主体内容位于局部视图中,下面我们就来定义这个局部视图,在
resources/views/admin
目录下新建
test.blade.php
,编辑其内容如下:

//  以上是单纯的文本发送/!  但是还不是带有图片发送的格式!  需要发送图片的格式的!  需要继续往下继续看!

图片的发送!
//这里是view成! 需要一下这么输入!

{{$name}},这是一封测试邮件
<br>
<img src="{{$message->embed($imgPath)}}">


//  图片的发送和文本的发送  没有什么其他不一样的!   而是在参数后面多写了一个参数! 一个简单的图片发送的文件就好了!

$name = '学院君';
$imgPath = 'http://laravelacademy.org/wp-statics/images/carousel/LaravelAcademy.jpg';
$flag = Mail::send('emails.test',['name'=>$name,'imgPath'=>$imgPath],function($message){
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: