安装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则显示此内容 ]); }
在浏览器中输入测试方法的地址。效果如图。
至此。转载请注明出处,记得扫码打赏支持哦,谢谢!