https://blog.csdn.net/wulove52/article/details/71172842

Laravel集成了SwiftMailer库进行邮件发送,邮件配置文件位于config/mail.PHP:、

  1. return [
  2. 'driver' => env('MAIL_DRIVER', 'smtp'),
  3. 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
  4. 'port' => env('MAIL_PORT', 587),
  5. 'from' => ['address' => null, 'name' => null],
  6. 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
  7. 'username' => env('MAIL_USERNAME'),
  8. 'password' => env('MAIL_PASSWORD'),
  9. 'sendmail' => '/usr/sbin/sendmail -bs',
  10. 'pretend' => false,
  11. ]

以上的参数  我们都会有详细的讲解!  请继续往下看!

driver用于配置默认的邮件发送驱动,Laravel支持多种邮件驱动方式,包括smtp、Mailgun、Maildrill、Amazon
SES
、mail和sendmail,Mailgun和Amazon SES都是收费的,Maildrill目前不支持中国区用户,这三个都是第三方邮件服务。mail驱动使用PHP提供的mail函数发送,sendmail驱动通过Sendmail/Postfix(Linux)提供的命令发送邮件,smtp驱动通过支持ESMTP的SMTP发送邮件。

注:ESMTP即Extended SMTP, 是对标准 SMTP 协议进行的扩展,它与 SMTP 服务的区别仅仅是,使用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时,服务器会要求用户提供用户名和密码以便验证身份。

就目前状况来看,使用smtp是最明智的选择,mail不安全,sendmail需要安装配置Sendmail/Postfix,其他要么付费要么不能用(汗!)。下面其它配置的说明都基于driver是smtp。

接下来其他的配置都好理解,host是邮箱所在主机,比如我们使用163邮箱,对应值是smtp.163.com,使用QQ邮箱的话,对应值是smtp.qq.com。

port用于配置邮箱发送服务端口号,比如一般默认值是25,但如果设置SMTP使用SSL加密,该值为465。

from配置项包含address和name,前者表示发送邮箱,后者表示发送邮件使用的用户名。

encryption表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls/ssl。

username表示邮箱账号,比如yaojinbu@163.com

password表示上述邮箱登录对应登录密码。

sendmail是在设置driver为sendmail时使用,用于指定sendmail命令路径。

pretend用于配置是否将邮件发送记录到日志中,默认为false则发送邮件不记录日志,如果为true的话只记录日志不发送邮件,这一配置在本地开发中调试时很有用。

// 接下来我们要做的就是要在控制器写代码了!

use Mail;

在方法中需要写以下!

     public function send()
{
$name = 'vilin';
$flag = Mail::send('emails.test',['name'=>$name],function($message){
$to = '1072155122@qq.com';
$message ->to($to)->subject('测试邮件');
});
if($flag){
echo '发送邮件成功,请查收!';
}else{
echo '发送邮件失败,请重试!';
}
}

//Mail::send需要传递三个参数,第一个是邮件视图,第二个是传入视图的数据,第三个是一个闭包,该闭包中定义了收件人、抄送人(如果有的话)、邮件主题、附件等信息。邮件的主体内容位于局部视图中,下面我们就来定义这个局部视图,在resources/views/admin目录下新建test.blade.php,编辑其内容如下:
//  以上是单纯的文本发送/!  但是还不是带有图片发送的格式!  需要发送图片的格式的!  需要继续往下继续看!

图片的发送!

//这里是view成! 需要一下这么输入!

{{$name}},这是一封测试邮件
<br>
<img src="{{$message->embed($imgPath)}}">

//  图片的发送和文本的发送  没有什么其他不一样的!   而是在参数后面多写了一个参数! 一个简单的图片发送的文件就好了!

$name = 'vilin';
$imgPath = 'http://laravelacademy.org/wp-statics/images/carousel/LaravelAcademy.jpg';
$flag = Mail::send('emails.test',['name'=>$name,'imgPath'=>$imgPath],function($message){

1.1 laravel发送邮件涉及的配置文件

    .env
/config/mail.php

以上是laravel发送邮件两个配置的地方,默认使用composer生成项目的时候,自动生成.env文件里会有邮箱的配置字段,如下:

    MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

以上这个几个字段在mail.PHP文件中都有对应的字段,如果部署上线,仅仅配置了mail.php而没有改.env文件里的配置(除非没有.env),那么邮箱是发送不成功的,因为.env文件会覆盖mail.php文件字段,切记小心。

1.2 使用QQ邮箱smtp发送邮件问题

1.2.1 开启QQ邮箱smtp和imap功能

在使用这个QQ邮箱发送之前你需要在所要发送邮箱的后台开启smtp和imap发送邮箱授权功能,否则将一直提示你没有授权。如果想要显示发送的记录,则需要设置收取选项。设置位置,直接上图:

至少你需要把POP3/SMTP服务开启,不然发邮件那是天方夜谭啊。

开启后,你还需要点击下方的:“生成授权码”,获取一个能够登录的动态密码:

千万千万千万记得,MAIL_PASSWORD填写的并非是发送邮箱的账号密码,而是到腾讯邮箱管理中心授权的动态密码!!!

加密方式建议选择选择ssl保证数据安全,那么最终.env邮件长这样:

    MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=
MAIL_USERNAME=[你的账号]
MAIL_PASSWORD=gzoyimtltnqsbdba
MAIL_ENCRYPTION=ssl

mail.php配置文件中,你仅仅需要修改from字段:

    return [
'from' => ['address' => [MAIL_USERNAME], 'name' => '小王']
]

然后你就可以愉快大发邮件啦:

5.2 发送邮件方式

\Mail::send('mail.index', [], function ($message) { $message->to(['chengxuyuan@qq.com'])->subject('公司未婚妹子数量报表统计');});

从5.3开始,发送邮件被抽象成了一个对象,如果使用laravel 5.3尝鲜的,请移步官方最新文档: https://laravel.com/docs/5.3/mail

//代码实现例子

 $data = [];    
$flag = \Illuminate\Support\Facades\Mail::to('panxlmail@qq.com')->send(new \App\Mail\UserMail($data));
if($flag) {
echo '发送失败';
} else {
echo '发送成功';
}

Laravel5.2 发送邮件(smtp方式最简单的讲解!)-邮件部分的更多相关文章

  1. C# - VS2019WinFrm程序通过SMTP方式实现邮件发送

    前言 本篇主要记录:VS2019 WinFrm桌面应用程序通过SMTP方式实现邮件发送.作为Delphi转C#的关键一步,接下来将逐步实现Delphi中常用到的功能. 准备工作 搭建WinFrm前台界 ...

  2. Java中XML格式的字符串4读取方式的简单比较

    Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...

  3. spring aop 使用xml方式的简单总结

    spring aop的 xml的配置方式的简单实现: 1.编写自己的切面类:配置各个通知类型 /** * */ package com.lilin.maven.service.aop; import ...

  4. 依据 smtp协议的简单golang 的发邮件实现

    依据 smtp协议的简单golang 的发邮件实现 协议格式如下 From:sender_user@demo.net To:to_user@demo.net Subject:这是主题 Mime-Ver ...

  5. 我在阿里这仨月 前端开发流程 前端进阶的思考 延伸学习的方式很简单:google 一个关键词你能看到十几篇优秀的博文,再这些博文中寻找新的关键字,直到整个大知识点得到突破

    我在阿里这仨月 Alibaba 试用期是三个月,转眼三个月过去了,也到了转正述职的时间.回想这三个月做过的事情,很多很杂,但还是有重点. 本文谈一谈工作中遇到的各种场景,需要用到的一些前端知识,以及我 ...

  6. ASP.NET中MD5的加密方式很简单

    在ASP.NET中MD5的加密方式很简单,代码如下: FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5&quo ...

  7. WEB开发中一些常见的攻击方式及简单的防御方法

    WEB开发中一些常见的攻击方式及简单的防御方法 转载:http://blog.csdn.net/seven__________7/article/details/70896913

  8. 框架原理第一讲,熟悉常用的设计方式.(以MFC框架讲解)

    框架原理第一讲,熟悉常用的设计方式.(以MFC框架讲解) 一丶什么是框架,以及框架的作用 什么是框架? 框架,简而言之就是把东西封装好了,使用框架开发可以快速开发程序,例如MFC程序的双击写代码. 为 ...

  9. C#多线程简单例子讲解

    C#多线程简单例子讲解 标签: 多线程c#threadobjectcallbacktimer 分类: C#(7) 转载网址:http://www.knowsky.com/540518.html .NE ...

随机推荐

  1. Linux监听的网络服务$ netstat -ntlp$ netstat -nulp$ netstat -nxlp

    我一般都分开运行这三个命令,不想一下子看到列出一大堆所有的服务.netstat -nalp倒也可以.不过我绝不会用 numeric 选项 (鄙人一点浅薄的看法:IP 地址看起来更方便). 找到所有正在 ...

  2. Leetcode6.ZigZag ConversionZ字形变换

    将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数: 之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR" 实现一个将字符串进行指定行 ...

  3. ubuntu上源码编译安装mysql5.7.27

    一.查看操作系统环境和目录结构,并创建mysql用户和组,以及规划安装mysql所需要的目录. #cat /etc/issue 查看发行版本信息: #cat  /proc/version 查看正在运行 ...

  4. 发布Qt Widgets桌面应用程序的方法

    Qt是一款优秀的跨平台开发框架,它可以在桌面.移动平台以及嵌入式平台上运行.目前Qt 5介绍程序发布的文章帖子比较少.大家又非常想要知道如何发布Qt应用程序,于是我花了一点儿时间介绍一下如何发布Qt桌 ...

  5. 图文结合深入理解 JS 中的 this 值

    图文结合深入理解 JS 中的 this 值 在 JS 中最常见的莫过于函数了,在函数(方法)中 this 的出现频率特别高,那么 this 到底是什么呢,今天就和大家一起学习总结一下 JS 中的 th ...

  6. Ubuntu 安装 setuptools

    Setuptools的官方页面 Easily download, build, install, upgrade, and uninstall Python packages 它是一个对python的 ...

  7. java 3类的继承

    模板类 泛型程序设计方法 类的组合 类的继承 java只有单继承 隐藏和覆盖 用super.x调用 访问静态属性 静态属性不继承 静态成员只有一个,不会有副本 静态成员只有一个所有的超类和子类 方法的 ...

  8. 如何实现已发布app的自动更新

    要实现app的自动更新,做两件事情就可以搞定 1.获取当前手机中的app版本号 我们可以通过查询mainbundle中的获取CFBundleVersion NSDictionary *infoDict ...

  9. 【JZOJ4935】【NOIP2017GDKOI模拟1.12】b

    Boring 构造一棵包含1号结点的连通子集个数刚好为给定的n的树. 这棵树的结点不能多于60. 1<=n<=109 Gai 容易得到,计算给定一棵树的Ans1,其中Ansi表示包含i号结 ...

  10. jquery find 推荐

    https://codeplayer.vip/p/j7soa 这篇写的还是不错的,备用. // 返回jQuery对象所有匹配元素的标识信息数组 // 每个元素形如:tagName或tagName#id ...