PHPEmailer使用简介(以qq邮箱为例)
1、从网上下载PHPEmailer;
2、确保PHP环境支持sockets扩展,还要开启openssl,如下图:
3、配置QQ邮箱
1.开启SMTP服务
2.验证密保
3.获取授权码(这个就是IMAP/SMTP的密码)
4、发送邮件,代码如下
<?php /** * Created by PhpStorm. * User: 黎志明 * Date: 2018/6/20 * Time: 17:53 */ header("content-type:text/html;charset=utf-8"); ini_set("magic_quotes_runtime", 0); require 'class.phpmailer.php'; try { $mail = new PHPMailer(true); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; // 设置邮件的字符编码,这很重要,不然中文乱码 $mail->SMTPAuth = true; //开启认证 $mail->SMTPSecure = 'ssl'; // 使用安全协议 $mail->Port = 465; $mail->Host = "smtp.qq.com"; $mail->Username = "xxxxxx@qq.com"; $mail->Password = "xxxxx"; $mail->AddReplyTo("769111968@qq.com", "Timothy");//回复地址 $mail->From = "xxxxx@qq.com"; $mail->FromName = "xxxxx"; $to = "xxxxx@qq.com"; $mail->AddAddress($to); $mail->Subject = "phpmailer测试标题"; $mail->Body = "<h1>演示</h1>这是演示内容"; $mail->AltBody = "当邮件不支持html时备用显示"; // 当邮件不支持html时备用显示,可以省略 $mail->WordWrap = 80; // 设置每行字符串的长度 //$mail->AddAttachment("c:/1.jpg"); // 添加附件 $mail->IsHTML(true); $mail->Send(); echo '邮件发送成功'; } catch (phpmailerException $e) { echo "邮件发送失败:" . $e->errorMessage(); }
5、遇到的问题:SMTP Error: Could not authenticate.
解决办法网上绝大多数都是一下几个(可能真的有效,但我遇到的就不能解决了)
1.按下面的来修改;
function IsSMTP() { $this->Mailer = 'smtp'; }改为 function IsSMTP() { $this->Mailer = 'SMTP'; }
2.将fsockopen函数替换成pfsockopen函数;
3.使用stream_socket_client函数,代码如下:
$this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno, $errstr, $tval);
以上的办法都试过,还是不能解决我的问题,然后我就怀疑是端口的问题,原来我用的端口是25,后来改成了465就解决了,这是由于使用了SSL,端口号要变成465