Laravel发送邮件

这是观看慕课网的教学视频然后写的一篇笔记
视频源链接在此:

介绍Laravel系统自带的邮件功能(SwiftMailer):

Laravel的邮件功能基于SwiftMailer函数库之上,提供了一个简洁的API
Laracel为SMTP、Mailgun、Manddrill、Amazon SES、PHP 的mail函数、以及sendmail提供了驱动从而允许你快速通过本地货运服务发送邮件

在代码中具体操作步骤:

1、邮件配置文件:config/mail.php
修改配置文件中的发件人信息,包括发件人的邮箱地址和发件人名称,这里使用的163邮箱
 'from' => [
        'address'=>'[email protected]',
        'name'=>'xxxx'
    ],
2、修改.env文件
MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=xxxxxxx     //163邮箱开启smtp 的授权码
MAIL_ENCRYPTION=ssl
附:163邮箱开启smtp的授权码
登陆进去163邮箱,进入设置,进入POP3/SMTP/IMAP

勾选开启POP3/SMTP服务,勾选之后选择“确认”,点击“开启”,获取短信验证码之后,就可以设置授权码了。记住这个授权码,然后填到.env文件中 MAIL_PASSWORD=xxxxxxx


3、在Controller中写邮件发送内容(包括发件人地址,名称;邮件主题;接收人邮箱地址)要与上面设置的一致
//发送纯文本
public  function mail(){
    \Mail::raw("邮件内容",function ($message){
        $message->from('[email protected]','xxx');
        $message->subject('邮件主题');
        $message->to('[email protected]');
    });
}

//发送模板文件
首先在resources/views/file/mail.blade.php
比如
<h1> Hello {{$name}}</h1>
自己可以编写更合适自己更加复杂的模板

重写mail方法
public  function mail(){
    \Mail::send('file.mail',['name'=>'Mailer Taylor'],function ($message){
        $message->to('[email protected]');
    });
    return 'send mail success';
}

4、在routes/api.php中添加路由
Route::any('/biz/mail', 'EmailController@mail');

如果报以下530错误
Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required
解决方法:
(1)去掉主题和内容中的“测试”或者“test”这些字眼,因为会被判断为垃圾邮件
(2)重启服务,再次访问路由,就可以收到邮件了

猜你喜欢

转载自blog.csdn.net/weixin_38682852/article/details/79761390