[PHPMailer]PHP电子邮件教程

前言

这周也是刚放假回来,苦逼高中生一个,很多时候因为我是住宿生,难免没有硬件设备来跟互联网进行沟通,有的时候我们想要给别人一个祝福,比如说某某人生日,但是你在学校,怎么给他祝福呢?这个时候PHPMailer就派上用场了,结合nonebot定时插件,还有api接口,我们就可以很轻松的去实现这个功能,具体怎么做,往下看

开始

QQ邮箱相关设置

首先我们登录qq邮箱

接着点开设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-76UEO9gP-1662949693454)(https://zsy.juncikeji.xyz/i/img/qqmail-setting.png)]

点开账户

qqmail-account

开启SMTP服务

qqmail-smtp

开启过程可能会要求验证身份,按照指引来一般就可以获得授权码,这个授权码一定要记住,后面会用到

下载PHPMailer及环境准备

项目地址:https://github.com/Synchro/PHPMailer

先对环境进行一个配置,因为邮件发送需要ssl服务,所以我们需要openssl

openssl

确保PHP环境开启openssl,如果未开启,检查ext文件夹下是否有php_openssl.dllphp_sockets.dll两个dll,php.ini文件中把img前面的去掉

我们也可以通过composer来下载PHPMailer

composer require phpmailer/phpmailer

下载完成我们打开vendor文件夹

将phpmailer整个文件夹复制到你项目根目录

然后将phpmailer/phpmailer/路径下的src也复制到根目录

这样你就完成了各项配置

代码部分

CharSet ='UTF-8';                     //设定邮件编码$mail->SMTPDebug = 0;                        // 调试模式输出$mail->isSMTP();                             // 使用SMTP$mail->Host = 'smtp.qq.com';                // SMTP服务器$mail->SMTPAuth = true;                      // 允许 SMTP 认证$mail->Username = $username;                // SMTP 用户名  即邮箱的用户名$mail->Password = $password;         // SMTP 密码  部分邮箱是授权码(例如163邮箱)$mail->SMTPSecure = 'ssl';                    // 允许 TLS 或者ssl协议$mail->Port = 465;                            // 服务器端口 25 或者465 具体要看邮箱服务器支持$mail->setFrom($username, $name);  //发件人$mail->addAddress($to, $toname);  // 收件人//$mail->addAddress('ellen@example.com');  // 可添加多个收件人$mail->addReplyTo($resname, 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致//$mail->addCC('cc@example.com');                    //抄送//$mail->addBCC('bcc@example.com');                    //密送//发送附件// $mail->addAttachment('../xy.zip');         // 添加附件// $mail->addAttachment('../thumb-1.jpg', 'new.jpg');    // 发送附件并且重命名//Content$mail->isHTML(true);                                  // 是否以HTML文档格式发送  发送后客户端可直接显示对应HTML内容$mail->Subject = $title;$mail->Body    = $msg;$mail->AltBody = '如果邮件客户端不支持HTML则显示此内容';$mail->send();$mes = array('code'=>400,'msg'=>'发信成功');$json_mes = json_encode($mes,JSON_UNESCAPED_UNICODE);echo $json_mes;
} catch (Exception $e) {$mes = array('code'=>400,'msg'=>'erro','data'=>'邮件发送失败: '.$mail->ErrorInfo);$json_mes = json_encode($mes,JSON_UNESCAPED_UNICODE);echo $json_mes;
}

我这里因为做成api所以各种配置还需要各位大佬自行填写

在接口返回json数据,并且状态码为200即为发信成功

就像这样

api-mail-sucess

结果

mail-receive

可以看到我们成功发送了一封电子邮件

总结

本教程没有放上nonebot写法,因为我也没写,所以,各位大佬,开动你们的脑筋,写个定时插件,加上邮件api,这样一个定时邮件插件就做好啦


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部