thinkphp5 邮件发送(qq邮箱为例)
一、首先需要你开启smtp 服务,登录qq邮箱,进入设置 -》 账户

注意: 开启后会生成授权码,一定要记下,两个都记下,登录邮件客户端需要。这里配置邮件发送也需要这个授权码
二、 下载phpmailer, 然后在thinkphp5 目录下的 扩展类库 extend目录下 新建phpmailer目录。。
把你下载的phpmailer里的class.phpmailer.PHP和class.smtp.php文件复制到phpmailer目录下。
注意:thinkphp5的扩展类的定义是,类文件命名为:phpmailer.php而不是class.phpmailer.php。所以要把class.phpmailer.php重命名为phpmailer.php。 另一个不用改。
三、代码实现:
1。 开启openssl扩展
2 。extend下的扩展类库使用的是命名空间必须在phpmailer.php和class.smtp.php最开头加上
namespace phpmailer;
3。在phpmailer.php中的2315行使用到了php的Exception异常类,在thinkphp框架中直接继承,thinkphp找不到Exception所以要修改如下;

4。 在使用phpmailer时,实例化PHPMailer(),需要使用命名空间
use phpmailer\phpmailer;
5。 然后在index模块下新建Mail.php控制器,代码如下
<?php
namespace app\index\controller;
use think\Controller; use phpmailer\phpmailer;
class Mail extends Base
{ function __construct(){
parent::__construct();
}
public function index(){
$sendmail = ''; //发件人邮箱
$sendmailpswd = ""; //客户端授权密码,而不是邮箱的登录密码!
$send_name = '';// 设置发件人信息,如邮件格式说明中的发件人,
$toemail = '';//定义收件人的邮箱
$to_name = '';//设置收件人信息,如邮件格式说明中的收件人
$mail = new PHPMailer();
$mail->isSMTP();// 使用SMTP服务
$mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
$mail->Host = "smtp.qq.com";// 发送方的SMTP服务器地址
$mail->SMTPAuth = true;// 是否使用身份验证
$mail->Username = $sendmail;//// 发送方的
$mail->Password = $sendmailpswd;//客户端授权密码,而不是邮箱的登录密码!
$mail->SMTPSecure = "ssl";// 使用ssl协议方式
$mail->Port = 465;// qq端口465或587)
$mail->setFrom($sendmail,$send_name);// 设置发件人信息,如邮件格式说明中的发件人,
$mail->addAddress($toemail,$to_name);// 设置收件人信息,如邮件格式说明中的收件人,
$mail->addReplyTo($sendmail,$send_name);// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
//$mail->addCC("xxx@qq.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
//$mail->addBCC("xxx@qq.com");// 设置秘密抄送人(这个人也能收到邮件)
//$mail->addAttachment("bug0.jpg");// 添加附件
$mail->Subject = "这是一个测试邮件";// 邮件标题
$mail->Body = "邮件内容是 <b>您的验证码是:123456</b>,哈哈哈!";// 邮件正文
//$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用 if(!$mail->send()){// 发送邮件
echo "Message could not be sent.";
echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
}else{
echo '发送成功';
} } }
thinkphp5 邮件发送(qq邮箱为例)的更多相关文章
- zabbix4.2配置邮件+脚本报警:以QQ邮箱为例
一.邮箱配置:开启smtp服务和授权 开启smtp选项后,系统会生成一个授权,你需要记住这个授权码,后面需要写入配置文件. 二.配置管理mailx: (1)安装mailx:[root@zabbix-s ...
- Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱
在进入正题这前先看下网易(163)邮箱的服务器地址和端口号 类型 服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号 收件服务器 POP pop.163.com 995 110 收件服务器 ...
- C# WinForm 使用SMTP协议发送QQ邮箱验证码
文章来自:https://blog.csdn.net/IT_xiao_guang_guang/article/details/104336604 前言 在程序设计中,发送验证码是常见的一个功能,用 ...
- -_-#【邮件】qq邮箱不显示图片
干货分享之邮件营销QQ邮箱IP白名单服务申请
- Python3+smtplib+poplib+imaplib实现发送和收取邮件(以qq邮箱为例)
一.说明 1.1 程序说明 (1)smtp是邮件发送协议:pop和imap都是邮件接收协议,两者的区别通常的说法是imap的操作会同步到邮箱服务器而pop不会,表现上我也不是很清楚 (2)本程序实现使 ...
- java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例
研究了近一天的时间,通过查阅相关资料,终于对java发送邮件的机制,原理有了一点点的理解,希望能够帮到大家! 1.首先要向你的项目里导入1个jar包:mail-1.4.4.jar即可(实现qq和163 ...
- php 发送QQ邮箱邮件
这是我的源码比较简陋 https://www.lanzous.com/i2l7h8f 感谢 https://www.cnblogs.com/woider/p/6980456.html 下载phpmai ...
- springboot整合邮件发送(163邮箱发送为例)
先登录163邮箱获取授权 勾选后安装提示会叫你设置授权密码之类的:记住授权的密码 1.引入maven依赖 <dependency> <groupId>org.springfr ...
- Python编写邮件群发(qq邮箱)
#电子邮件操作 import poplib import smtplib from email.header import decode_header from email.mime.text imp ...
随机推荐
- mysql合并查询结果及为表和字段取别名
利用union关键字,可以给出多条select语句,并将它们的结果组合成单个的结果. 合并是,两个表对应的列数和数据类型必须相同. 各个select语句之间使用union或union all关键字分隔 ...
- 核心交换机各项配置 Vlan划分、互访、ACL管控、链路聚合等
#!Software Version V200R001C00SPC300sysname IT_ServerRoom #交换机名称##vlan batch 10 20 30 40 50 60 70 8 ...
- FastDFS - 文件服务器学习资料
FastDFS搭建及java整合代码 CentOS 6.5下 FastDFS结合Nginx插件实现图片http访问 图片服务器fastDFS的搭建以及配置 nginx fastdfs 配置后 上传成功 ...
- PHP打印重复的东西
<?php echo str_repeat(" ", 8)?>//连续打印8个空格
- 關於 WebClient wc = new WebClient() 下載第三方數據不能進安安信任異常
報錯異常:The underlying connection was closed: Could not establish trust relationship for SSL/TLS secure ...
- [Eclipse] 项目编码
一.修改eclipse的新建项目的编码 在菜单栏的 Window->Preferences->General->Workspace->Text file encoding 将其 ...
- ThinkPHP3.2 介绍
模块化 驱动化 为云平台而生ThinkPHP3.2正式版发布! ThinkPHP是国内领先的WEB应用开发框架,诞生于2006年初,在国内具有良好的口碑和广大的用户群,秉承了大道至简的开发理念,让WE ...
- nodejs基础 -- EventEmitter
var events = require('events'); nodejs所有的异步I/O操作在完成时都会发送一个事件到事件队列 nodejs里面的许多对象都会分发事件,如: 一个net.Serve ...
- linux -- 终端执行可执行文件
有一个可执行文件:/media/home/1.sh 1.首先,得有权限 (1)如果已经是root用户(#),则不用做什么 (2)如果不是 $ sudo su pass your password:(这 ...
- bootstrap -- css -- 辅助类
文本 文本颜色 如果文本是个链接,则鼠标移动到链接文本上的时候,文本会变暗 .text-muted:灰色 .text-primary:浅蓝色 .text-success:绿色 .text-info:深 ...