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

原文地址:https://www.cnblogs.com/timothy-lai/p/9205157.html