laravel邮箱相关

35 篇文章 0 订阅

选择

可以选择网易163、腾讯等

1、网易163免费邮箱的smtp

服务器名:smtp.163.com

端口号:25

2、

发送

1、不使用插件 

参考:Link    参考学院君:Link

1、配置 .env    MAIL_USERNAME和MAIL_FROM_ADDRESS 保持一致,MAIL_PASSWORD可以使授权码
163 ssl方式安全推荐
MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=465
MAIL_USERNAME=XXXX@163.com
MAIL_PASSWORD=ls123456789
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=XXXX@163.com
MAIL_FROM_NAME=ls

163 非ssl方式
MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=XXXX@163.com
MAIL_PASSWORD=ls123456789
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=XXXX@163.com
MAIL_FROM_NAME=ls

QQ邮箱ssl方式
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=XXXX@qq.com
MAIL_PASSWORD=assiyvgeaba
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=XXXX@qq.com
MAIL_FROM_NAME=ls
2、可以发邮件了,控制器里引入:

use Illuminate\Support\Facades\Mail;

//通过邮件模板
$to = '1072155122@qq.com';
$subject = 'Welcome!';
Mail::send('mails.welcome', ['key' => 'value'], function($message) use ($to, $subject)
{
    $message->to($to, 'ls')->subject($subject);
});


$name = '学院君';
Mail::send('emails.test',['name'=>$name],function($message){
       $to = '1072155122@qq.com';
       $message ->to($to)->subject('测试邮件');
  });
if(Mail::failures()){
    echo '发送邮件成功,请查收!';
}else{
    echo '发送邮件失败,请重试!';
}
//更简单的纯文本邮件发送
上面的示例仅仅是发送一个字符串,对于纯文本字符串邮件发送,还有更简单的方法:

Mail::raw('这是一封测试邮件', function ($message) {
    $to = '1072155122@qq.com';
    $message ->to($to)->subject('测试邮件');
});
这样的话无需创建视图即可完成邮件发送。

//发送带附件的邮件(中文乱码解决)
当然,邮件内容往往不仅仅是纯文本这么简单,有时候我们会在邮件中加上附件,那么这该如何实现呢?

先上代码:

Mail::send('emails.test',['name'=>$name],function($message){
    $to = '1072155122@qq.com';
    $message->to($to)->subject('测试邮件');

    $attachment = storage_path('app/files/test.doc');
    //在邮件中上传附件
    $message->attach($attachment,['as'=>'测试文档.doc']);
});
再次访问http://laravel.app:8000/mail/send发送邮件,这样在收件箱中可以看到附件,但附件名称出现中文乱码,解决办法如下:

$message->attach($attachment,['as'=>"=?UTF-8?B?".base64_encode('测试文档')."?=.doc"]);

//发送带图片的邮件
embed

除了附件之外,有时候为了让邮件内容更丰富,还会在邮件内容中插入图片,我们固然可以在邮件视图中硬编码写入图片路径,但是这显然很笨重,灵活性很差,Laravel为我们提供了便捷方法——在视图中使用$message上的embed方法:

{{$name}},这是一封测试邮件
<br>
<img src="{{$message->embed($imgPath)}}">
这里的$message就是上述邮件发送闭包中的$message,Laravel内部自动将该变量传递到邮件视图。当然我们还需要在控制器动作中传入$imgPath变量:

$name = '学院君';
$imgPath = 'https://xueyuanjun.com/wp-statics/images/carousel/LaravelAcademy.jpg';
Mail::send('emails.test',['name'=>$name,'imgPath'=>$imgPath],function($message){
    $to = '1072155122@qq.com';
    $message->to($to)->subject('测试邮件');

    $attachment = storage_path('app/files/test.doc');
    //在邮件中上传附件
    $message->attach($attachment,['as'=>"=?UTF-8?B?".base64_encode('测试文档')."?=.doc"]);
});

2、使用插件,比如guzzlehttp/guzzle

参考学院君:Link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值