[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也复制到根目录

这样你就完成了各项配置

代码部分

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require './src/Exception.php';
require './src/PHPMailer.php';
require './src/SMTP.php';

$mail = new PHPMailer(true);                              // Passing `true` enables exceptions
$username = $_GET['username'];
$password = $_GET['password'];
$name = $_GET['name'];
$to = $_GET['to'];
$toname = $_GET['toname'];
$resname = $_GET['resname'];
$msg = $_GET['msg'];
$title = $_GET['title'];
try {
    //服务器配置
    $mail->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,这样一个定时邮件插件就做好啦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值