使用PHP发送email进行帐号激活或者密码修改操做

 使用PHPMailer编写发送邮件php

  PHPMailer需PHP的socket扩展支持,而PHPMailer连接qq域名邮箱时须要ssl加密方式(qq邮箱最近作了限制,新开域名邮箱再也不容许经过smtp协议的25端口的普通连接方式连接,只容许ssl的465或587端口[个人一个域名邮箱内测期开通的域名邮箱目前25端口仍是能够连接的,多是安全策略,限制了新开域名邮箱帐户的25端口]),固php还得openssl的支持,能够查看phpinfohtml

 

准备工做:安全

一、PHPMailer类文件服务器

 

二、有一个邮箱帐号,这里我使用的是QQ邮箱socket

【注】这里有一点尤为要引发注意啦,必定要保证该邮箱帐号的SMTP/POP3服务是开启的,不然是没有办法链接到邮箱服务器,更不可能发送邮件的。函数

具体查看:post

【设置】-->【邮箱设置】-->【帐户】-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务测试

 

 

在进行此操做时,常会出现一下错误:ui

一、Function set_magic_quotes_runtime() is deprecated?编码

 【问题原因】PHP5.3和PHP6.0以后移除了set_magic_quotes_runtime()函数

   【解决之道】就是用ini_set()办法替代原有的set_magic_quotes_runtime语法,例如:

 

二、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;
		}
	}
?>
相关文章
相关标签/搜索