使用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. logback 配置

    logback 配置 logback的配置方式包括:编程配置.XML文件配置.Groovy文件配置.对于使用log4j的用户,还可以通过logback提供的工具( http://logback.qos ...

  2. 多个DLL合并成一个DLL

    多个DLL合并成一个DLL,把DLL合并到Exe中的解决方案 1:) 下载 http://download.microsoft.com/download/1/3/4/1347C99E-9DFB-425 ...

  3. EF初级入门 (一对多、多对多)

    1.创建新项目并引入Entity Framework 然后就可以开始使用EF了 开始使用一对多 Users 用户类,UserDetail用户详情类:一个用户对应多个详情(仅用于测试) public c ...

  4. AngularJS-Uncaught Error: [$injector:modulerr]

    我在实验AngularJS-系统代码的配置和翻译的时候遇到了如下图所示的错误: 在JS编程的时候会经常遇到,XXX不是一个函数,XXX未定义等等错误,只要看到和自己编写的代码语句相关的东西直接找到就能 ...

  5. SQL Server 2012日志文件误删除数据库质疑后的相关恢复

    alter database testdb set emergencyalter database testdb set single_userdbcc checkdb('testdb',REPAIR ...

  6. for 小曦

    安装GO 当前版本1.6.2 http://blog.163.com/hehaifeng1984@126/blog/static/690011362013101044011568/ 教程 https: ...

  7. ZYNQ fsbl阶段的调试方法

    以下是从安富利工程师的技术支持的邮件中摘抄的,在此再次对他们表示感谢. 在我们面对客户单板的时候,fsbl阶段的调试多少会有些问题,在这个过程中怎么快速定位客户的问题,并将有效的信息反馈给希望能帮助到 ...

  8. windows7 编译boost1.54

    先去下载boost1.54 for windows原码.原来有个安装工具现在已经停止维护了,我试了旧版,已经安装不了. 这是它们的网站:http://www.boostpro.com/download ...

  9. C语言的文法分析

    <程序>  ->   <声明> | <程序> <函数> <声明>  ->   #include<stdio.h>|# ...

  10. 寻找 nani (1)

    test.pl文件room(kitchen). room(office). room(hall). room('dining room'). room(cellar). location(desk,o ...