THINKPHP3.2.3整合PHPMailer实现后台自定义配置邮箱配置信息,如邮件显示名、邮箱服务器地址、邮箱地址、邮箱密码、测试发送内容等,建议使用163邮箱,QQ邮箱容易被当做垃圾邮件屏蔽。
在做项目时经常会遇到使用邮箱发送邮件的情况,比如会员注册时发送注册码、发送注册成功提示信息,忘记密码时发送重置密码链接,有留言时及时发送邮件通知等,本文就讲解THINKPHP3.2.3实现后台自定义配置邮箱配置信息。先看效果图
配置界面
测试发送
邮箱接收测试信息
下面开始教程
首先我们需要一个PHPMailer类
然后创建一个公共方法包含且实例化该类
PHPMailer.class.php
/** * 功能:系统邮件发送函数 * @param string $to 接收邮件者邮箱 * @param string $name 接收邮件者名称 * @param string $subject 邮件主题 * @param string $body 邮件内容 * @param string $attachment 附件列表 * @return boolean */ function send_mail($to, $name, $subject = '', $body = '', $attachment = null, $config = '') { $config = is_array($config) ? $config : C('SYSTEM_EMAIL'); $smtp_port = C('smtp_port'); $smtp_host = C('smtp_host'); $smtp_user = C('smtp_user'); $smtp_pass = C('smtp_pass'); $from_email = C('from_email'); $from_name = C('from_name'); $reply_email = C('reply_email'); $reply_name = C('reply_name'); if(empty($smtp_port) || empty($smtp_host) || empty($smtp_user) || empty($smtp_pass)|| empty($from_email)|| empty($from_name)){ return '邮箱配置不完整'; } include_once('./Application/Common/Lib/PHPMailer/PHPMailer.class.php'); $mail = new \PHPMailer(); //PHPMailer对象 $mail->CharSet = 'uTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码 $mail->IsSMTP(); // 设定使用SMTP服务 //$mail->IsHTML(true); $mail->SMTPDebug = 1; // 关闭SMTP调试功能 1 = errors and messages2 = messages only $mail->SMTPAuth = true; // 启用 SMTP 验证功能 if ($smtp_port == 465) $mail->SMTPSecure = 'ssl'; // 使用安全协议 $mail->Helo = 'Hello smtp.qq.com Server'; $mail->Host = $smtp_host; // SMTP 服务器 $mail->Port = $smtp_port; // SMTP服务器的端口号 $mail->username = $smtp_user; // SMTP服务器用户名 $mail->Password = $smtp_pass; // SMTP服务器密码 $mail->SetFrom($from_email, $from_name); $replyEmail = $reply_email ? $reply_email : $from_email; $replyName = $reply_name ? $reply_name : $from_name; $mail->AddReplyTo($replyEmail, $replyName); $mail->Subject = $subject; $mail->MsgHTML($body); $mail->AddAddress($to, $name); if (is_array($attachment)) { // 添加附件 foreach ($attachment as $file) { if (is_array($file)) { is_file($file['path']) && $mail->AddAttachment($file['path'], $file['name']); } else { is_file($file) && $mail->AddAttachment($file); } } } else { is_file($attachment) && $mail->AddAttachment($attachment); } return $mail->Send() ? true : $mail->ErrorInfo; }
发送方法:
public function set_email() { $return = send_mail($_POST['test_email'], "", "测试配置是否正确", "这是一封测试邮件,如果收到了说明配置没有问题", "", $_POST); if ($return == 1) { echo json_encode(array('status' => 1, 'info' => "测试邮件已经发往你的邮箱" . $_POST['test_email'] . "中,请注意查收")); } else { echo json_encode(array('status' => 0, 'info' => "$return")); } }
整个流程下来就可以发送成功了
注:以下信息记得改成自己对应的信息和路径了
include_once('./Application/Common/Lib/PHPMailer/PHPMailer.class.php');
验证密码:是授权码