laravel框架简易对接网易163邮件

准备工作

  • 申请网易邮箱并开通SMTP服务
    进入设置POP3/SMTP/IMAP,开通IMAP/SMTP服务即可。
    开通的时候,会进行一个简单的认值。认证之后,会显示一个密码,记下来,下面配置网站发送信息MAIL_PASSWORD需要它。
  • 使用smtp配置邮箱。
    smtp的服务器地址是smtp.163.com, 开放端口是25。参加网易邮箱说明
  • 生产环境配置
    由于服务器提供基于安全考虑,可能已经禁用Linux的系统的25端口。
    你真正部署到线上服务器的时候,如果不能用,可能需要把端口改成465,并开启ssl配置。我使用的阿里云的服务器,就是个典型的案例。
    MAIL_PORT=465
    MAIL_ENCRYPTION=ssl
    
  • 配置模板
    env文件配置如下,下面是我的账号配置,你需要按照这种模板,改成自己的就行了。
    MAIL_MAILER=smtp
    MAIL_HOST=smtp.163.com
    MAIL_PORT=25
    MAIL_USERNAME=
    MAIL_PASSWORD=RBVMZTRRKVBMHDSD
    MAIL_ENCRYPTION=null
    MAIL_FROM_ADDRESS=
    MAIL_FROM_NAME="${APP_NAME}"
    

邮箱制作

详细信息建议参加官方文档

  • 生产邮寄类
    php artisan make:mail AlertMsg
    
    生产的邮寄类,在app/Mail中,类内部的build中配置邮件模板。
    class AlertMsg extends Mailable
    {
        public function __construct()
        {
           //
      	}
        public function build()
        {
            return $this->view('emails.alert');
        }
    

设置发件人

如果,你的发件人都是同一个的话,可以在config/mail.php中设置。

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

其实就是env文件中的MAIL_USERNAMEMAIL_FROM_ADDRESS两个配置。

MAIL_USERNAME=houxin
MAIL_FROM_ADDRESS=houxin@163.com

以上是我的配置,在这里配置你的发件人名称和发件人邮箱即可。

如果,我们需要频繁的修改发件人的话,修改发送类中的build,添加->from方法。

public function build()
{
	return $this->from('houxin@163.com')->view('emails.alert');
}

发送邮件

在你的需要发送的控制器中使用mail类发送邮件

  • 简单发送模板
    这里我只是发送我的模板给目标邮箱。
    use Illuminate\Support\Facades\Mail;
    
    // 测试发送邮件
    public function index(){
        Mail::to('1912481652@qq.com')->send(new AlertMsg);
    	
    }
    
    to的参数可以接收一个邮箱数组,意味着群发。像这样
    Mail::to(['1912481652@qq.com', '21458225@qq.com'])->send(new AlertMsg);
    
  • 特定变量参数发送
    我们把变量传递给邮箱类的实例化的函数。实例化的时候,把它设置全局变量。这样,你的邮箱模板,就可以直接使用邮箱类的全局变量了。
  1. 修改控制器
    // 测试发送邮件
    public function index(){
        $data = [
            'code' =>'500',
            'msg' =>'Server error',
        ];
        Mail::to(['1919401652@qq.com'])->send(new AlertMsg($data));
    
    }
    
  2. 修改邮件发送类
    public $data;
    
    public function __construct($data)
    {
        // 注册data为全局变量
        $this->data = $data;
    }
        public function build()
    {
        return $this->view('emails.alert');
    }
    
  3. 这样就可以在模板内部直接使用data变量了。
    模板如下:
    <p>编号:{{ $data['code'] }}</p>
    <p>消息:{{ $data['msg'] }}</p>
    

邮件显示定制

  • 邮件标题
    邮件标题在邮箱类通过subject指定。如下,把邮件的标题指定为"警报"
    public function build()
    {
        return $this->subject('警报')->view('emails.alert');
    }
    
  • 邮件发件人
    .env文件中的MAIL_FROM_NAME是邮件发件人的名称,env中默认使用的"${APP_NAME}",也就是app名称。
    如果没有任何修改的话,显示的就是laravel。

提示:这里提供了laravel邮箱的简单使用,如果需要定制的要求,建议参考官方文档。
更复杂的要求,请参见laravel文件的mail部分,点击文档地址查看

posted @ 2020-04-25 16:33  houxin  阅读(365)  评论(0编辑  收藏  举报