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 相关文章推荐
DISCUZ 分页代码
Jan 02 PHP
php SQL防注入代码集合
Apr 25 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
php二维数组用键名分组相加实例函数
Nov 06 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
php实现singleton()单例模式实例
Nov 06 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
PHP上传文件参考配置大文件上传
Dec 16 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
Dec 25 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
Jul 30 PHP
php apache开启跨域模式过程详解
Jul 08 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
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
Less 安装及基本用法
2018/05/05 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
vue实现抽屉弹窗效果
2020/11/15 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
python根据url地址下载小文件的实例
2018/12/18 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
python二元表达式用法
2019/12/04 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
会计电算化专业个人的自我评价
2013/11/24 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
导游词之河北邯郸
2019/09/12 职场文书
python中super()函数的理解与基本使用
2021/08/30 Python