利用Laravel自带的Mail类发邮件

  由于项目在运行过程中经常用到邮件检测报警的功能,而在之前我都是用shell脚本发送邮件。shell脚本的优点是可以直接处理服务器指令,但是其缺点就是处理数据的能力效率太低,取数据库的许多数据要先把数据写入文件里,然后每行读文件并且分割来取出你想要的数据,相对来说麻烦太多。所以本人就准备直接利用Laravel框架封装好的Mail类直接发邮件,而且php语言相对shell来说数据处理能力简直强太多,所以果断弃坑了。

  首先新建一个Laravel项目,在其.env文件里找到MAIL相关值,配好邮件发送账号的配置(根据不同的driver和host需自己进行对应,如163或者其他)。

其次,在config目录下的mail.php配置好address和name,当时我就是没配这个就半天发不出去,这种类似于配置项的东西Lavarel要是都写在.env里那就不是只用在.env里写好了之后就可以一键使用邮件了,岂不是更方便,这个地方给个差评。mail.php把这两个地方加上即可:

最后在自己的Controller里引用Mail类

然后在调用发邮件的方法send():

//发邮件
$flag = Mail::send('emails.test',['data'=>$data],function($message)
{
      $to = '123456789@qq.com';
      $message ->to($to)->subject('测试邮件');
 });
 if($flag)
 {
      echo '邮件发送成功';
 }
 else
 {
      echo '邮件发送失败';
 }

send()方法里第一个参数为resource/views下的任意一个页面(这个页面就是邮箱要显示的内容),第二个参数为从后台传回到那个页面的参数,$to为邮件接收人,subject为邮件的主题,这样就把一封邮件呢发出去了,相比之前方便很多。

最后我在linux下放一个crontab定时向我这个项目发curl请求就可以定时跑任务了,早就应该弃shell了。

 

posted @ 2016-11-04 20:26  前后维谷  阅读(9201)  评论(0编辑  收藏  举报