TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)
在 PHP 应用开发中,往往需要验证用户邮箱、发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持。
如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮件发送程序了,不过开发这样一个程序并不容易。
好在 PHPMailer 封装的足够强大,使用它可以更加便捷的发送邮件,免去了我们很多额外的麻烦。
首先,修改php.ini中的一些配置
- extension=php_openssl.dll 前面的分号去掉
- allow_url_fopen = Off 改为 allow_url_fopen = On
PHPMailer
PHPMailer 是一个封装好的 PHP 邮件发送类,支持发送 HTML 内容的电子邮件,以及可以添加附件发送,并不像 PHP 本身 mail() 函数需要服务器环境支持,您只需要设置邮件服务器以相关信息就能实现邮件发送功能。
PHPMailer 项目地址:https://github.com/PHPMailer/PHPMailer
PHP扩展支持
PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密,故 PHP 还得包含 openssl 的支持。

↑ 使用 phpinfo() 函数查看 socket 和 openssl 扩展信息(wamp server 默认启用了该扩展)。
整理后的PHPMailer 核心文件
我们需要下载的phpmailer文件:点击下载
↑ 在本文中只需要将下载的压缩包解压到当前TP5框架下的extend文件夹中
QQ 邮箱中的 设置

选择账户

所有的主流邮箱都支持 SMTP 协议,但并非所有邮箱都默认开启,您可以在邮箱的设置里面手动开启。
第三方服务在提供了账号和密码之后就可以登录 SMTP 服务器,通过它来控制邮件的中转方式。
开启 SMTP 服务

↑ 选择 IMAP/SMTP 服务,点击开启服务。
验证密保

↑ 发送短信“配置邮件客户端”至1069-0700-69。
获取授权码

↑ SMTP 服务器认证密码,需要妥善保管(PS:密码直接没有空格)。
PHP发送邮件
基本代码
下面的代码演示了 PHPMailer 的使用方法,注意 PHPMailer 实例的配置过程。
Loader::import('phpmailer.phpmailer');//加载extend中的自定义类
$mail = new \PHPMailer\PHPMailer(); //实例化
header("content-type:text/html;charset=utf-8");
// 使用SMTP方式发送
$mail->IsSMTP();
// 设置邮件的字符编码
$mail->CharSet='UTF-8';
// 企业邮局域名
$mail->Host = 'smtp.qq.com';
//---------qq邮箱需要的------//设置使用ssl加密方式登录鉴权
$mail->SMTPSecure = 'ssl';
//设置ssl连接smtp服务器的远程服务器端口号 可选465或587
$mail->Port = ;//---------qq邮箱需要的------
// 启用SMTP验证功能
$mail->SMTPAuth = true;
//邮件发送人的用户名(请填写完整的email地址)
$mail->Username = '123456789@qq.com' ;
// 邮件发送人的 密码 (授权码)
$mail->Password = '修改为自己的授权码'; //修改为自己的授权码
//邮件发送者email地址
$mail->From ="123456789@qq.com";
//发送邮件人的标题
$mail->FromName ="123456789@qq.com";
//收件人的邮箱 给谁发邮件
$email_addr = "收件人邮箱";
//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")
$mail->AddAddress("$email_addr", substr( $email_addr, , strpos($email_addr ,'@')));
//回复的地址
$mail->AddReplyTo('123456789@qq.com' , "" );
$mail->AddAttachment("./mail.rar"); // 添加附件
//set email format to HTML //是否使用HTML格式
$mail->IsHTML(true);
//邮件标题
$mail->Subject = '邮件标题';
//邮件内容
$mail->Body = "<p style='color:red'>" . '邮件内容' . '</p>';
//附加信息,可以省略
$mail->AltBody = '';
// 添加附件,并指定名称
$mail->AddAttachment( './error404.php' ,'php文件');
//设置邮件中的图片
$mail->AddEmbeddedImage("shuai.jpg", "my-attach", "shuai.jpg");
if( !$mail->Send() ){
$mail_return_arr['mark'] = false ;
$str = "邮件发送失败. <p>";
$str .= "错误原因: " . $mail->ErrorInfo;
$mail_return_arr['info'] = $str ;
}else{
$mail_return_arr['mark'] = true ;
$str = "邮件发送成功";
$mail_return_arr['info'] = $str ;
}
echo "<pre>";
print_r( $mail_return_arr);
将上述代码修改为自己需要的就搞定了!
TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)的更多相关文章
- PHP 利用QQ邮箱发送邮件「PHPMailer」
在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮 ...
- asp.net利用QQ邮箱发送邮件,关键在于开启pop并设置授权码为发送密码
public static bool SendEmail(string mailTo, string mailSubject, string mailContent) { ...
- C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)
下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用: using System.Net.Mail; using System.Text; using System.Net; ...
- [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)
下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用:using System.Net.Mail;using System.Text;using System.Net; 程序 ...
- C#邮件发送(最坑爹的邮箱-QQ邮箱)---转发(SmallFlyElephant)
C#邮件发送(最坑爹的邮箱-QQ邮箱) 最近工作挺清闲的,有空的时候陪妹子出去玩玩,自己看看小说,看看电影,日子过的挺欢乐的,这个星期幡然悔悟,代码才是我的最爱,做点小东西,就写个邮件发送程序.说的邮 ...
- C#使用SMTP协议发送验证码到QQ邮箱
C#使用SMTP协议发送验证码到QQ邮箱 在程序设计中,发送验证码是常见的一个功能,用户在注册账号时或忘记密码后,通常需要发送验证码到手机短信或邮箱来验证身份,此篇博客介绍在C#中如何使用SMTP协议 ...
- legend3---lavarel中使用qq邮箱发送邮件
legend3---lavarel中使用qq邮箱发送邮件 一.总结 一句话总结: 第一步:配置邮箱做服务器,比如qq邮箱,网易163邮箱 第二步:配置lavarel的配置文件 第三部:写邮件发送代码就 ...
- 杂项之使用qq邮箱发送邮件
杂项之使用qq邮箱发送邮件 本节内容 特殊设置 测试代码 1. 特殊设置 之前QQ邮箱直接可以通过smtp协议发送邮件,不需要进行一些特殊的设置,但是最近使用QQ邮箱测试的时候发现以前使用的办法无法奏 ...
- ecshop QQ邮箱发送邮件服务器配置
ecshop QQ邮箱发送邮件服务器配置 1.邮件服务:采用其他的SMTP服务 2.邮件服务器是否要求加密连接(SSL): 是 此项设置需要php支持openSSL模块 开启方法: a.php.ini ...
随机推荐
- node api 之:process - 进程
process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程. 因为是全局变量,所以无需使用 require().
- Centos中iptables和firewall防火墙开启、关闭、查看状态、基本设置等(转)
iptables防火墙 1.基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 servi ...
- 解决The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
Spring Boot JPA 使用Mysql是出现如下错误: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represe ...
- ML: 聚类算法R包 - 模型聚类
模型聚类 mclust::Mclust RWeka::Cobweb mclust::Mclust EM算法也称为期望最大化算法,在是使用该算法聚类时,将数据集看作一个有隐形变量的概率模型,并实现模型最 ...
- overflow标签
有时父标签设置了固定的宽高,但子标签把父标签给撑开了,就要在父标签里加一个overflow标签,等于hidden超出的地方隐藏,等于auto超出的地方隐藏,并且多个滚动条 <div style= ...
- DLL对象类型转换
//以下代码是错误的!!! //这一节主要告诉大家,以这种方式进行开发dll是不对的以及错误原因,正确的方式是什么! //DLL内创建对象,并把对象返回 function GetDataSet(str ...
- Java第04次实验提纲(面向对象2-继承、多态、抽象类与接口)
PTA 题集面向对象2-进阶-多态接口内部类 第1次实验 1.1 题集5-1(Comparable) 难点:如果传入对象为null,或者传入对象的某个属性为null,怎么处理? 1.2 题集5-2(C ...
- jQuery控制元素显示、隐藏、切换、滑动的方法
jQuery 隐藏和显示 通过 hide() 和 show() 两个函数,jQuery 支持对 HTML 元素的隐藏和显示: 实例 $("#hide").click(functio ...
- 【linux】安装docker
硬件Centos6.9 x86_64 1.查看centos内核,uname -r 目前,CentOS 仅发行版本中的内核支持 Docker. Docker 运行在 CentOS 7 上,要求系统为64 ...
- 用windows自带的ftp.exe实现断点续传的方法
摘自http://www.jb51.net/article/10604.htm 动画下载地址: http://www.chinesehack.org/soft/book/goonftp-jc.rar ...