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