zoukankan      html  css  js  c++  java
  • 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 IlluminateSupportFacadesMail;
      
      // 测试发送邮件
      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部分,点击文档地址查看

  • 相关阅读:
    《英语语法新思维初级教程》学习笔记(七)五种基本句型
    《英语语法新思维初级教程》学习笔记(六)实义动词与(情态)助动词
    《英语语法新思维初级教程》学习笔记(五)形容词
    《英语语法新思维初级教程》学习笔记(四)数量限定词和个体限定词
    C# Redis存Session Hash存对象
    MVC中Spring.net 对基类控制器无效 过滤器控制器无效
    C# datagridview列绑定类中类的属性
    商品评分效果JavaScript
    C# SQL数据库学习时遇到到一些异常
    C语言用一维数组打印杨辉三角(原:无意中想到)
  • 原文地址:https://www.cnblogs.com/hxsen/p/12773638.html
Copyright © 2011-2022 走看看