11、ThinkPHP6实战开发高大上企业站(TP6)之邮件发送
前言
今天给大家带来邮件发送的功能。
开启邮箱STMTP功能
1、进入qq邮箱后台,找到账户
2、在服务状态处点击开启服务
插件安装
composer require phpmailer/phpmailer
邮箱发送代码
public function emailTest()
{
$params = Request()->param();
// 实例化
$mail = new PHPMailer();
// 是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
$mail->SMTPDebug = 0;
// 使用smtp鉴权方式发送邮件
$mail->isSMTP();
// smtp需要鉴权 这个必须是true
$mail->SMTPAuth = true;
// 因为我发送邮件用的是QQ邮箱,这里填写qq域名邮箱的服务器地址,163是“smtp.163.com”
$mail->Host = $params['smtpServer'];
// 设置使用ssl加密方式登录鉴权
// $mail->SMTPSecure = 'ssl';
// 设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587
$mail->Port = $params['smtpPort'];
// 设置smtp的helo消息头 这个可有可无 内容任意
// $mail->Helo = 'Hello smtp.qq.com Server';
// 设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
$mail->Hostname = '';
// 设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
$mail->CharSet = 'UTF-8';
// 设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
$mail->FromName = $params['smtpNickname'];
// smtp登录的账号,就是QQ邮箱登录账号
$mail->Username = $params['smtpEmail'];
// smtp登录的密码,就是上面第一步记录的密码
$mail->Password = $params['smtpPassword'];
// 设置发件人邮箱地址,就是开启这个smtp的邮箱地址
$mail->From = $params['smtpEmail'];
// 邮件正文是否为html编码
$mail->isHTML(true);
// 设置收件人邮箱地址,该方法有两个参数:第一个参数为收件人邮箱地址;第二参数为给该地址设置的昵称,不同的邮箱系统会自动进行处理变动,这里第二个参数的意义不大
$mail->addAddress($params['smptTestRecvEmail'], '');
// 添加多个收件人
// $mail->addAddress('xxx@163.com','');
//添加该邮件的主题
$mail->Subject = $params['smptTestTitle']; // $title;
//添加邮件正文,上方将isHTML设置成了true,则可以是完整的html字符串,如:使用file_get_contents函数读取本地的html文件
$mail->Body = $params['smptTestContent']; // $content;
// 为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
// $mail->addAttachment('./d.jpg','mm.jpg');
// 同样该方法可以多次调用 上传多个附件
// $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');
$status = $mail->send();
// 简单的判断与提示信息
if ($status) {
return jsonSuccess('网站邮箱发送测试成功~', "");
} else {
return jsonError('网站邮箱发送测试失败~');
}
}
前端代码
<div class="layui-form" wid100 lay-filter="form-email">
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">SMTP服务器</label>
<div class="layui-input-inline">
<input type="text" name="smtpServer" value="smtp.aliyun.com" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">如:smtp.163.com</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SMTP端口号</label>
<div class="layui-input-inline" style="width: 20%;">
<input type="text" name="smtpPort" lay-verify="number" value="25" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">一般为 25 或 465</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发件人邮箱</label>
<div class="layui-input-inline">
<input type="text" name="smtpEmail" value="xianxin@layui-inc.com" lay-verify="email" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发件人昵称</label>
<div class="layui-input-inline">
<input type="text" name="smtpNickname" value="贤心" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱登入密码</label>
<div class="layui-input-inline">
<input type="password" name="smtpPassword" value="123456" autocomplete="off" class="layui-input">
</div>
</div>
<fieldset class="layui-elem-field">
<legend>测试邮件信息</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<label class="layui-form-label">收件人邮箱</label>
<div class="layui-input-inline">
<input type="text" name="smptTestRecvEmail" value="chiyuba@qq.com" lay-verify="email" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">测试标题</label>
<div class="layui-input-inline">
<input type="text" name="smptTestTitle" placeholder="测试标题" value="测试标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">测试内容</label>
<div class="layui-input-inline">
<textarea name="smptTestContent" placeholder="测试内容" value="测试内容" class="layui-textarea"></textarea>
</div>
</div>
</div>
</fieldset>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="pear-btn pear-btn-primary" lay-submit lay-filter="set_system_email">保存配置</button>
<button class="pear-btn pear-btn-primary" lay-submit lay-filter="set_system_email_test">测试发送</button>
</div>
</div>
</div>
前端效果
注意此处的邮箱登入密码为:SMTP服务开启后的授权码