我之前一直使用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请输授权码,发个短信就能生成
至此已经可以发送邮件了,附上两个邮箱互相发送成功的截图
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。