您现在的位置是:首页 > 文章详情  网站首页文章详情

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

  • Administrator
  • 2156
  • 2020-04-25 16:33:00
简介准备工作 申请网易邮箱并开通SMTP服务 进入设置POP3/SMTP/IMAP,开通IMAP/SMTP服务即可。 开通的时候,会进行一个简单的认值。认证之后,会显示一个密码,记下...

准备工作

  • 申请网易邮箱并开通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部分,点击文档地址查看

文章评论

Top