安装phpmailer库
由于phpmailer托管在composer上,所以可使用composer进行安装。进入thinkphp工程根目录下,输入如下命令。
composer require phpmailer/phpmailer
等待片刻后,自动默认安装在vendor目录下。如图。
编写公共的发邮件方法(可选)
在application目录下的common.php文件中编写发邮件方法。在公共common.php文件中编写方法有个好处就是,可以在整个thinkphp框架下直接调用该方法名。
use PHPMailer\PHPMailer\PHPMailer;
/**
* 发送邮件
* @param array $content
* @return string
*/
function sendEmail(array $content=[
'Host'=>'', //服务器
'Port'=>'', //端口
'Username'=>'', //邮箱的用户名
'Password'=>'', //密码 部分邮箱是授权码(例如163邮箱)
'setFrom'=>[], //发件人
'addAddress'=>[], //收件人
'addReplyTo'=>[], //回复的时候回复给哪个邮箱 建议和发件人一致
'addCC'=>[], //抄送
'addBCC'=>[], //密送
'addAttachment'=>'', //添加附件
'Subject'=>'', //邮件标题
'Body'=>'', //邮件内容
'AltBody'=>'', //如果邮件客户端不支持HTML则显示此内容
])
{
$email = new PHPMailer(true);
try {
$email->isSMTP(); //使用SMTP协议
$email->isHTML(true); //是否以HTML文档格式发送
$email->SMTPAuth = true; //启用SMTP验证功能
$email->SMTPSecure = "ssl"; //加密方式
$email->CharSet ="UTF-8"; //设定邮件编码
// $email->SMTPDebug = false; //设置为 true 可以查看具体的发送日志
//获取参数
$email->Host = $content['Host'];
$email->Port = $content['Port'];
$email->Username = $content['Username'];
$email->Password = $content['Password'];
$email->setFrom($content['setFrom'][0],$content['setFrom'][1]);
$email->addAddress($content['addAddress'][0],$content['addAddress'][1]);
if(!empty($content['addReplyTo'])){ $email->addReplyTo($content['addReplyTo'][0],$content['addReplyTo'][1]); }
if(!empty($content['addCC'])){ $email->addCC($content['addCC'][0],$content['addCC'][1]); }
if(!empty($content['addBCC'])){ $email->addBCC($content['addBCC'][0],$content['addBCC'][1]); }
if(!empty($content['addAttachment'])){ $email->addAttachment = $content['addAttachment']; }
$email->Subject = $content['Subject'];
$email->Body = $content['Body'];
if(!empty($content['AltBody'])){ $email->AltBody = $content['AltBody']; }
$res = $email->send();
if ($res){
return '1^邮件发送成功';
}else{
return '-1^邮件发送失败';
}
}catch (Exception $e){
return '-1^邮件发送失败: '.$email->ErrorInfo;
}
}
调用发邮件方法
编写好发邮件的方法后进行发邮件测试,如在index.php文件中编写测试方法。
/**
* 测试方法
*/
function test(){
// include '../application/common.php';
echo sendEmail([
'Host'=>'smtp.exmail.qq.com', //服务器
'Port'=>'465', //端口
'Username'=>'w******g@med****.cn', //邮箱的用户名
'Password'=>'D******4', //密码 部分邮箱是授权码(例如163邮箱)
'setFrom'=>['w******g@med****.cn','**旺'], //发件人
'addAddress'=>['w******w@foxmail.com','w***w'], //收件人
'addReplyTo'=>['w******g@med****.cn','**旺'], //回复的时候回复给哪个邮箱 建议和发件人一致
'addCC'=>[], //抄送
'addBCC'=>[], //密送
'addAttachment'=>'', //添加附件
'Subject'=>'这里是邮件标题', //邮件标题
'Body'=>'<h1>这里是邮件内容</h1>', //邮件内容
'AltBody'=>'如果邮件客户端不支持HTML则显示此内容', //如果邮件客户端不支持HTML则显示此内容
]);
}
在浏览器中输入测试方法的地址。效果如图。
至此。转载请注明出处,记得扫码打赏支持哦,谢谢!