使用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. Python3.x和Python2.x的区别

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...

  2. 使用 Wireshark 调试 HTTP/2 流量

    https://imququ.com/post/http2-traffic-in-wireshark.html

  3. 自己用C语言写PIC32 serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 从15年12月份以来我 ...

  4. HttpClientUtils

    import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.List; import ...

  5. editplus工具支持sql高亮提示

    editplus默认不识别sql关键件,添加文件使其对sql高亮提示. 首先就是要自己编写一段代码,存为.stx 文件(例如sql.stx) 然后在editplus的菜单栏 工具-> 配置用户工 ...

  6. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  7. Managing IIS Log File Storage

    Managing IIS Log File Storage   You can manage the amount of server disk space that Internet Informa ...

  8. {ICIP2014}{收录论文列表}

    This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...

  9. WAP端 touch事件触发顺序记录

    IOS7.0 safari 滚动滚动条的时候, 最后手指放开 (scroll 总是在 touchend后面,所以要用 setTimeout) touchstart touchmove(多个) touc ...

  10. 第四章ContentProvider

    No resource found that matches the given name 'Theme.AppCompat.Light'.