PHPMAILER实现PHP发邮件功能


Posted in PHP onApril 18, 2018

本文实例为大家分享了PHPMAILER实现PHP发邮件功能的具体代码,供大家参考,具体内容如下

第一步:打开网址下载PHPMailer,PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密的, PHP 还得包含 openssl 的支持。

PHPMAILER实现PHP发邮件功能

第二步:使用 phpinfo() 函数查看 socket 和 openssl 扩展信息(wamp server 默认启用了该扩展)。

openssl 如果没有开启请打开php.ini文件进行开启

首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;', 如果不存在这行,那么添加extension=php_openssl.dll。

PHPMAILER实现PHP发邮件功能

PHPMailer 核心文件

PHPMAILER实现PHP发邮件功能

第三步:QQ 邮箱设置

所有的主流邮箱都支持 SMTP 协议,但并非所有邮箱都默认开启,您可以在邮箱的设置里面手动开启。

第三方服务在提供了账号和密码之后就可以登录 SMTP 服务器,通过它来控制邮件的中转方式。

第四步:开启 SMTP 服务

PHPMAILER实现PHP发邮件功能

选择 IMAP/SMTP 服务,点击开启服务

第五步:验证密保

PHPMAILER实现PHP发邮件功能

发送短信“配置邮件客户端”至1069-0700-69

第六步:获取授权码

PHPMAILER实现PHP发邮件功能

SMTP 服务器认证密码,需要妥善保管(PS:密码直接没有空格)

第七步:PHP发送邮件

基本代码

下面的代码演示了 PHPMailer 的使用方法,注意 PHPMailer 实例的配置过程。

// 引入PHPMailer的核心文件
require_once("PHPMailer/class.phpmailer.php");
require_once("PHPMailer/class.smtp.php");
 
// 实例化PHPMailer核心类
$mail = new PHPMailer();
// 是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
$mail->SMTPDebug = 1;
// 使用smtp鉴权方式发送邮件
$mail->isSMTP();
// smtp需要鉴权 这个必须是true
$mail->SMTPAuth = true;
// 链接qq域名邮箱的服务器地址
$mail->Host = 'smtp.qq.com';
// 设置使用ssl加密方式登录鉴权
$mail->SMTPSecure = 'ssl';
// 设置ssl连接smtp服务器的远程服务器端口号
$mail->Port = 465;
// 设置发送的邮件的编码
$mail->CharSet = 'UTF-8';
// 设置发件人昵称 显示在收件人邮件的发件人邮箱地址前的发件人姓名
$mail->FromName = '发件人昵称';
// smtp登录的账号 QQ邮箱即可
$mail->Username = '12345678@qq.com';
// smtp登录的密码 使用生成的授权码
$mail->Password = '**********';
// 设置发件人邮箱地址 同登录账号
$mail->From = '12345678@qq.com';
// 邮件正文是否为html编码 注意此处是一个方法
$mail->isHTML(true);
// 设置收件人邮箱地址
$mail->addAddress('87654321@qq.com');
// 添加多个收件人 则多次调用方法即可
$mail->addAddress('87654321@163.com');
// 添加该邮件的主题
$mail->Subject = '邮件主题';
// 添加邮件正文
$mail->Body = '<h1>Hello World</h1>';
// 为该邮件添加附件
$mail->addAttachment('./example.pdf');
// 发送邮件 返回状态
$status = $mail->send(); 

我在thinkphp5.0中使用代码

/**
* 邮件发送
* @param $to 接收人
* @param string $subject 邮件标题
* @param string $content 邮件内容(html模板渲染后的内容)
* @throws Exception
* @throws phpmailerException
*/
function send_email($to,$subject='',$content=''){
vendor('phpmailer.PHPMailerAutoload');
//require_once 'vendor/phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$arr = db('config')->where('inc_type','smtp')->select();
$config = convert_arr_kv($arr,'name','value');
$mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 0;
//调试输出格式
//$mail->Debugoutput = 'html';
//smtp服务器
$mail->Host = $config['smtp_server'];
//端口 - likely to be 25, 465 or 587
$mail->Port = $config['smtp_port'];
 
 
 
if($mail->Port === 465) $mail->SMTPSecure = 'ssl';// 使用安全协议
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//发送邮箱
$mail->Username = $config['smtp_user'];
//密码
$mail->Password = $config['smtp_pwd'];
//Set who the message is to be sent from
$mail->setFrom($config['smtp_user'],$config['email_id']);
//回复地址
//$mail->addReplyTo('replyto@example.com', 'First Last');
//接收邮件方
if(is_array($to)){
foreach ($to as $v){
$mail->addAddress($v);
}
}else{
$mail->addAddress($to);
}
 
 
 
$mail->isHTML(true);// send as HTML
//标题
$mail->Subject = $subject;
//HTML内容转换
$mail->msgHTML($content);
//Replace the plain text body with one created manually
//$mail->AltBody = 'This is a plain-text message body';
//添加附件
//$mail->addAttachment('images/phpmailer_mini.png');
//send the message, check for errors
return $mail->send();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
Jun 25 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
php实现搜索类封装示例
Mar 31 PHP
PHP实现bitmap位图排序与求交集的方法
Jul 28 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
PHP单例模式数据库连接类与页面静态化实现方法
Mar 20 PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 #PHP
php无限级评论嵌套实现代码
Apr 18 #PHP
PHP实现负载均衡下的session共用功能
Apr 17 #PHP
PHP代码重构方法漫谈
Apr 17 #PHP
php微信公众号开发之现金红包
Apr 16 #PHP
PHP闭包定义与使用简单示例
Apr 13 #PHP
PHP简单实现正则匹配省市区的方法
Apr 13 #PHP
You might like
模仿OSO的论坛(二)
2006/10/09 PHP
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
用PHP函数解决SQL injection
2006/12/09 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
js实现简单页面全屏
2019/09/17 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
Python 如何访问外围作用域中的变量
2016/09/11 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
八年级语文教学反思
2014/02/11 职场文书
人事专员工作职责
2014/02/22 职场文书
产品推广策划方案
2014/05/10 职场文书
餐厅开业活动方案
2019/07/08 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
python爬取某网站原图作为壁纸
2021/06/02 Python