使用PHP发送email进行账号激活或者密码修改操作
使用PHPMailer编写发送邮件
PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式(qq邮箱最近做了限制,新开域名邮箱不再允许通过smtp协议的25端口的普通链接方式链接,只允许ssl的465或587端口[我的一个域名邮箱内测期开通的域名邮箱目前25端口还是可以链接的,可能是安全策略,限制了新开域名邮箱账户的25端口]),固php还得openssl的支持,可以查看phpinfo
准备工作:
1、PHPMailer类文件
2、有一个邮箱账号,这里我使用的是QQ邮箱
【注】这里有一点尤其要引起注意啦,一定要保证该邮箱账号的SMTP/POP3服务是开启的,否则是没有办法连接到邮箱服务器,更不可能发送邮件的。
具体查看:
【设置】-->【邮箱设置】-->【账户】-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
在进行此操作时,常会出现一下错误:
1、Function set_magic_quotes_runtime() is deprecated?
【问题缘由】PHP5.3和PHP6.0之后移除了set_magic_quotes_runtime()函数
【解决之道】就是用ini_set()办法替代原有的set_magic_quotes_runtime语法,例如:
2、Password command failed: 535 Error: authentication failed?
【解决之道】将$mail->Password该配置项的值修改为SMTP服务器的授权码即可,而不是登录SMTP服务器的密码。
<?php
$user_name = "李武明";
$content =
<<<html
<pre>
亲爱的$user_name:
您好,您的小米帐号117314868于2016-12-17 12:03:30登录小米云服务。如果此登录行为非您本人操作,请立即登录https://account.xiaomi.com 修改密码 如果您对此通知有任何疑问,请访问<a href="https://www.baidu.com">http://www.mi.com/service/contact</a> 联系我们的客服进行咨询 此邮件由系统自动发出,请勿直接回复。
</pre>
html;
$addAddress = array('1459543371@qq.com','1169714343@qq.com','liwuming900913@163.com'); $config = array(
'fromName' => '李武明',
'userName' => '1459543371@qq.com',
'userPwd' => 'lxpuoxthkatdhjic',
'from' => '1459543371@qq.com',
'subject' => 'PHPMailer发送邮件的测试',
'content' => $content,
'addAttachment' => array("./zhuomian1.png","./zhuomian2.png","./zhuomian3.png","./zhuomian4.png")
); postmail($addAddress,$config); /**
* @brief:发送email
* @param $to 收件人
* @param $config SMTP服务器相关配置信息
* @param $content 邮件内容
*/
function postmail($addAddress,$config){
require_once("./PHPMailer/class.phpmailer.php"); $mail = new PHPMailer(); //示例化PHPMailer核心类 //SMTP服务器的相关信息设置
$mail->SMTPDebug = 1; //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
$mail->isSMTP(); //使用smtp鉴权方式发送邮件
$mail->SMTPAuth=true; //smtp需要鉴权 这个必须是true
$mail->Host = 'smtp.qq.com'; //链接qq域名邮箱的服务器地址
$mail->SMTPSecure = 'ssl'; //设置使用ssl加密方式登录鉴权
$mail->Port = 465; //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
$mail->CharSet = 'UTF-8'; //设置发送的邮件的编码 //发件人信息相关设置
$mail->FromName = $config['fromName']; //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
$mail->Username = $config['userName']; //smtp登录的账号 这里填入字符串格式的qq号即可
$mail->Password = $config['userPwd']; //smtp登录的密码
$mail->From = $config['from']; //设置发件人邮箱地址 //邮件内容设置
$mail->isHTML(true); //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
//设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址
if(empty($addAddress)){
return false;
}else if(is_array($addAddress)){
foreach($addAddress as $value){
if(is_array($value)){
$mail->addAddress($value['email'],$value['text']);
}else{
$mail->addAddress($value);
}
}
}else{
$mail->addAddress($value['email']);
} //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
if(is_array($config['addAttachment'])){
foreach($config['addAttachment'] as $value){
$mail->addAttachment($value);
}
}else if(!empty($config['addAttachment'])){
$mail->addAttachment($config['addAttachment']);
} $mail->Subject = $config['subject']; //添加该邮件的主题
$mail->Body = $config['content']; //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件 $status = $mail->send(); //简单的判断与提示信息
if($status) {
echo '发送邮件成功';
}else{
echo '发送邮件失败,错误信息未:'.$mail->ErrorInfo;
}
}
?>
使用PHP发送email进行账号激活或者密码修改操作的更多相关文章
- asp.net发送E-mail
发送电子邮件也是项目开发当中经常用到的功能,这里我整理了一个发送电子邮件(带附件,支持多用户发送,主送.抄送)的类库,供大家参考. 先上两个实体类,用于封装成Mail对象. /// <summa ...
- 使用python原生的方法实现发送email
使用python原生的方法实现发送email import smtplib from email.mime.text import MIMEText from email.mime.multipart ...
- 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#发送Email邮件
转自:http://hi.baidu.com/bluesky_cn/item/8bb060ace834c53f020a4df2 下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需 ...
- 使用Spring发送Email
配置Spring发送邮件 Spring发送邮件底层还是使用JavaMail,我在http://www.cnblogs.com/lz2017/p/6882925.html 中记录过关于JavaMail的 ...
- IOS发送Email的两种方法
IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. ...
- java发送email一般步骤
java发送email一般步骤 一.引入javamail的jar包: 二.创建一个测试类,实现将要发送的邮件内容写入到计算机本地,查看是否能够将内容写入: public static void mai ...
- Node.js 发送Email
章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...
随机推荐
- Linux 任务计划
一.配置cron实现自动化 使用cron实现任务自动化可以通过修改/etc/crontab文件以及使用crontab命令实现,其结果是一样的. 1./etc/crontab文件实现自动化 cron守护 ...
- 把CMSampleBufferRef转成Data
CMSampleBufferRef ref=[output copyNextSampleBuffer]; NSLog(@"%@",ref); if(ref==NULL) break ...
- 使用PerfView诊断.Net GC的问题
PerfView 概述: PerfView是一个可以帮助你分析CPU和内存问题的工具软件.它非常轻量级也不会入侵诊断的程序,在诊断过程中对诊断的程序影响甚微. Visual Studio自带的性能分析 ...
- C#小程序飞行棋关卡操作
飞行棋关卡操作 1.分析设计 飞行棋的基本规则为二人轮流掷骰子,则此处为循环结构,然后根据投掷出的点数进行前进<注:在每一步前进之后均应该判断是否走完了游戏>,在遇到关卡时进行相应的操作, ...
- SSH Tunneling
把本地端口 local_port 转发到服务器 server2 的 remote_port 端口上, server1 和 server2可以是同一ip或者不同ip. ssh user@server1 ...
- MaxScript重启3dsMax的重新思考
前天看到一位大神写用MaxScript实现重启3dsMax的方法,用的是.net临时编译一个exe出来,然后用这个新的进程来关闭并开启新的max.感觉这种思路不错,或许可以用在别的地方.不过谈及max ...
- [转]简单理解Socket
简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html 题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...
- 采用TCP协议的PIC32MZ ethernet bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 趁热打铁,在上一PIC ...
- leetcode6:Zigzag Conversion@Python
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- [Altera]PLL仿真
EDA Tools: 1.Quartus II 13.1(64-bit) 2.Modelsim SE-64 10.1c Time: 2016.05.05 ----------------------- ...