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

Posted 我不想平庸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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进行账号激活或者密码修改操作的主要内容,如果未能解决你的问题,请参考以下文章

Django实现邮件发送功能

python smtp邮件发送失败怎么办

苹果手机突然出现激活

忘记MySQL root密码,如何不重启修改

git 查看修改账号密码

非交互式创建账号和修改密码