Laravel5.2 发送邮件(smtp方式最简单的讲解!)-邮件部分
https://blog.csdn.net/wulove52/article/details/71172842
Laravel集成了SwiftMailer库进行邮件发送,邮件配置文件位于config/mail.PHP
:、
- return [
- 'driver' => env('MAIL_DRIVER', 'smtp'),
- 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
- 'port' => env('MAIL_PORT', 587),
- 'from' => ['address' => null, 'name' => null],
- 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
- 'username' => env('MAIL_USERNAME'),
- 'password' => env('MAIL_PASSWORD'),
- 'sendmail' => '/usr/sbin/sendmail -bs',
- 'pretend' => false,
- ]
以上的参数 我们都会有详细的讲解! 请继续往下看!
driver
用于配置默认的邮件发送驱动,Laravel支持多种邮件驱动方式,包括smtp
、Mailgun
、Maildrill
、Amazon
、
SESmail
和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方式最简单的讲解!)-邮件部分的更多相关文章
- C# - VS2019WinFrm程序通过SMTP方式实现邮件发送
前言 本篇主要记录:VS2019 WinFrm桌面应用程序通过SMTP方式实现邮件发送.作为Delphi转C#的关键一步,接下来将逐步实现Delphi中常用到的功能. 准备工作 搭建WinFrm前台界 ...
- Java中XML格式的字符串4读取方式的简单比较
Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...
- spring aop 使用xml方式的简单总结
spring aop的 xml的配置方式的简单实现: 1.编写自己的切面类:配置各个通知类型 /** * */ package com.lilin.maven.service.aop; import ...
- 依据 smtp协议的简单golang 的发邮件实现
依据 smtp协议的简单golang 的发邮件实现 协议格式如下 From:sender_user@demo.net To:to_user@demo.net Subject:这是主题 Mime-Ver ...
- 我在阿里这仨月 前端开发流程 前端进阶的思考 延伸学习的方式很简单:google 一个关键词你能看到十几篇优秀的博文,再这些博文中寻找新的关键字,直到整个大知识点得到突破
我在阿里这仨月 Alibaba 试用期是三个月,转眼三个月过去了,也到了转正述职的时间.回想这三个月做过的事情,很多很杂,但还是有重点. 本文谈一谈工作中遇到的各种场景,需要用到的一些前端知识,以及我 ...
- ASP.NET中MD5的加密方式很简单
在ASP.NET中MD5的加密方式很简单,代码如下: FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5&quo ...
- WEB开发中一些常见的攻击方式及简单的防御方法
WEB开发中一些常见的攻击方式及简单的防御方法 转载:http://blog.csdn.net/seven__________7/article/details/70896913
- 框架原理第一讲,熟悉常用的设计方式.(以MFC框架讲解)
框架原理第一讲,熟悉常用的设计方式.(以MFC框架讲解) 一丶什么是框架,以及框架的作用 什么是框架? 框架,简而言之就是把东西封装好了,使用框架开发可以快速开发程序,例如MFC程序的双击写代码. 为 ...
- C#多线程简单例子讲解
C#多线程简单例子讲解 标签: 多线程c#threadobjectcallbacktimer 分类: C#(7) 转载网址:http://www.knowsky.com/540518.html .NE ...
随机推荐
- Nginx 编译设置模块执行顺序
Nginx编译时,配置"--add-module=xxx"可以加入模块,当我们需要按照指定顺序来设置过滤模块执行顺序时,先配置的"--add-module=xxx&quo ...
- vue里调用moment.js
1.首先安装moment npm install moment --save 2.在main.js里引入 import moment from 'moment'//导入文件 Vue.prot ...
- jmeter 之 https 请求
本文为自己学习总结,转载需说明出处. jmeter发送https请求需要在巨jmeter中导入被测试网站的安全证书. 一.通过浏览器登录对应的网站导出安全证书.下面操作以360浏览器为例: 二.把导出 ...
- golang函数二
- mybatis-plus思维导图,让mybatis-plus不再难懂
mybatis-plus与mybatis mybatis Mybatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置 ...
- 跨域知识(二)——JSONP
JSONP是服务器与客户端跨源通信的常用方法.最大特点就是简单适用,老式浏览器全部支持,服务器改造非常小. 它的基本思想是,网页通过添加一个<script>元素,向服务器请求JSON数据, ...
- poj3422 最小费用流
一遍的话秩序要dp就好,但是这里要删去点.此题可以转化为最小费用流.开始我想了半天纠结怎么处理到过一次后值变0,看了书之后发现拆点解决了这个问题. 对于点t,拆为t-->t',容量为1,费用为负 ...
- 总结 ESP8266 RTOS 开发环境搭建
总结 ESP8266 RTOS 开发环境搭建 仔细看官方文档. 必须一步一步操作. 不要想当然,以为 make 就可以. 忽略编译警告,除非是错误. 工具链必须使用官方提供的. 多看看 Issues ...
- Leetcode784.Letter Case Permutation字母大小写全排列
给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入: S = "a1b2" 输出: ["a1 ...
- More Effective C++: 04效率
16:牢记80-20准则 80-20准则说的是大约20%的代码使用了80%的程序资源:大约20%的代码耗用了大约80%的运行时间:大约20%的代码使用了80%的内存:大约20%的代码执行80%的磁盘访 ...