使用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进行账号激活或者密码修改操作的更多相关文章

  1. asp.net发送E-mail

    发送电子邮件也是项目开发当中经常用到的功能,这里我整理了一个发送电子邮件(带附件,支持多用户发送,主送.抄送)的类库,供大家参考. 先上两个实体类,用于封装成Mail对象. /// <summa ...

  2. 使用python原生的方法实现发送email

    使用python原生的方法实现发送email import smtplib from email.mime.text import MIMEText from email.mime.multipart ...

  3. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用: using System.Net.Mail; using System.Text; using System.Net; ...

  4. [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用:using System.Net.Mail;using System.Text;using System.Net; 程序 ...

  5. 【转】C#发送Email邮件

    转自:http://hi.baidu.com/bluesky_cn/item/8bb060ace834c53f020a4df2 下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需 ...

  6. 使用Spring发送Email

    配置Spring发送邮件 Spring发送邮件底层还是使用JavaMail,我在http://www.cnblogs.com/lz2017/p/6882925.html 中记录过关于JavaMail的 ...

  7. IOS发送Email的两种方法

    IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. ...

  8. java发送email一般步骤

    java发送email一般步骤 一.引入javamail的jar包: 二.创建一个测试类,实现将要发送的邮件内容写入到计算机本地,查看是否能够将内容写入: public static void mai ...

  9. Node.js 发送Email

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...

随机推荐

  1. Linux 任务计划

    一.配置cron实现自动化 使用cron实现任务自动化可以通过修改/etc/crontab文件以及使用crontab命令实现,其结果是一样的. 1./etc/crontab文件实现自动化 cron守护 ...

  2. 把CMSampleBufferRef转成Data

    CMSampleBufferRef ref=[output copyNextSampleBuffer]; NSLog(@"%@",ref); if(ref==NULL) break ...

  3. 使用PerfView诊断.Net GC的问题

    PerfView 概述: PerfView是一个可以帮助你分析CPU和内存问题的工具软件.它非常轻量级也不会入侵诊断的程序,在诊断过程中对诊断的程序影响甚微. Visual Studio自带的性能分析 ...

  4. C#小程序飞行棋关卡操作

    飞行棋关卡操作 1.分析设计 飞行棋的基本规则为二人轮流掷骰子,则此处为循环结构,然后根据投掷出的点数进行前进<注:在每一步前进之后均应该判断是否走完了游戏>,在遇到关卡时进行相应的操作, ...

  5. SSH Tunneling

    把本地端口 local_port 转发到服务器 server2 的 remote_port 端口上, server1 和 server2可以是同一ip或者不同ip. ssh user@server1 ...

  6. MaxScript重启3dsMax的重新思考

    前天看到一位大神写用MaxScript实现重启3dsMax的方法,用的是.net临时编译一个exe出来,然后用这个新的进程来关闭并开启新的max.感觉这种思路不错,或许可以用在别的地方.不过谈及max ...

  7. [转]简单理解Socket

    简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html  题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...

  8. 采用TCP协议的PIC32MZ ethernet bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 趁热打铁,在上一PIC ...

  9. leetcode6:Zigzag Conversion@Python

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  10. [Altera]PLL仿真

    EDA Tools: 1.Quartus II 13.1(64-bit) 2.Modelsim SE-64 10.1c Time: 2016.05.05 ----------------------- ...