这周也是刚放假回来,苦逼高中生一个,很多时候因为我是住宿生,难免没有硬件设备来跟互联网进行沟通,有的时候我们想要给别人一个祝福,比如说某某人生日,但是你在学校,怎么给他祝福呢?这个时候PHPMailer就派上用场了,结合nonebot定时插件,还有api接口,我们就可以很轻松的去实现这个功能,具体怎么做,往下看
首先我们登录qq邮箱
接着点开设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-76UEO9gP-1662949693454)(https://zsy.juncikeji.xyz/i/img/qqmail-setting.png)]
点开账户

开启SMTP服务

开启过程可能会要求验证身份,按照指引来一般就可以获得授权码,这个授权码一定要记住,后面会用到
项目地址:https://github.com/Synchro/PHPMailer
先对环境进行一个配置,因为邮件发送需要ssl服务,所以我们需要openssl

确保PHP环境开启openssl,如果未开启,检查ext文件夹下是否有php_openssl.dll、php_sockets.dll两个dll,php.ini文件中把
前面的去掉
我们也可以通过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即为发信成功
就像这样


可以看到我们成功发送了一封电子邮件
本教程没有放上nonebot写法,因为我也没写,所以,各位大佬,开动你们的脑筋,写个定时插件,加上邮件api,这样一个定时邮件插件就做好啦