我之前一直使用163邮箱发送需要处理的文件,但是如果操作过于频繁【或者有别的问题】,会导致发送失败,相反现在用QQ的貌似还没出现过类似情况,不过QQ邮箱配置和163有一丢丢不一样,我还是贴一下,怕朋友们踩到坑(建议大家用qq邮箱,建议大家用qq邮箱,建议大家用qq邮箱)重要的事情说三遍!!!


1.下载PHPMailer,我这里推荐大家使用composer安装

"require": {
    "phpmailer/phpmailer":"*"
  }, 

2.使用PHPMailer,我这里先创建一个类去使用,直接上代码:

use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;

class SendEmail
{
    public function __construct($options)
    {
        try {
            $mail = new PHPMailer(); //New instance, with exceptions enabled
            $mail->CharSet='UTF-8'; //这是设置中文的编码
            $body = $options['body'];  //发送的消息内容

            $mail->IsSMTP();                           // tell the class to use SMTP
            $mail->SMTPAuth = true;                  // enable SMTP authentication
            $mail->Port = $options['Port'];                    // set the SMTP server port
            $mail->Host = $options['Host']; // SMTP server 网易是smtp.163.com这个,QQ邮箱是smtp.qq.com
            $mail->Username = $options['Username'];     // SMTP server username
            $mail->Password = $options['Password'];            // SMTP server password


            $mail->AddReplyTo($options['ReplyEmail'], $options['ReplyEmailName']); //回复地址

            $mail->From = $options['From'];  //发送方的邮箱地址
            $mail->FromName = $options['FromName'];    //发送方的邮箱名

            $to = $options['to'];  //接收方的邮件地址

            $mail->AddAddress($to);

            $mail->Subject = $options['Subject'];

            $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
            $mail->WordWrap = 80; // set word wrap
            $mail->AddAttachment($options['AddAttachment']); //可以添加附件

            $mail->MsgHTML($body);
            $mail->Send();
        } catch (Exception $e) {
            echo $e->errorMessage();
        }
    }
}

然后就在一个控制器上调用这个类就可以了,继续上代码:

$options = [
            'Port' => 25,  //网易是25端口,其实也不重要,qq照样能用
            'Host' => 'smtp.qq.com',//网易是这个,QQ邮箱是smtp.qq.com
            'Username' => '********@qq.com', //发送邮件的帐号
            'Password' => '********',   //发送邮件帐号的客户端授权码
            'ReplyEmail' => '********@163.com',  //回复邮件的邮箱地址
            'ReplyEmailName' => '********',  //回复邮件的邮箱帐号
            'From' => '********@qq.com',  //发送邮件的邮箱帐号地址
            'FromName' => '********',  //发送邮件的邮箱帐号名称
            'to' => '********@qq.com',  //发送邮件的邮箱帐号名称
            'Subject' => '********',//标题
            'body' => '********',
            'AddAttachment' => dirname($_SERVER["DOCUMENT_ROOT"]) . "/html/test.png" //这是添加附件的东西
        ];
        $sendmial = new SendEmail($options);


最后说几个问题,Username的话,网易直接使用邮箱名即可,QQ邮箱请输入邮箱前缀【用户名】『eg.1214982635@qq.com
请输入1214982635』 Password网易直接输入邮箱密码即可【有授权码输授权码】,QQ请输授权码,发个短信就能生成
至此已经可以发送邮件了,附上两个邮箱互相发送成功的截图



zero风来
126 声望3 粉丝