1、搭建好ThinkPHP环境这个我就不用说了,不让各位也不会来看这篇文章。
2、下载Phpmail源代码,我是重github上下载的,google code也有,不过要翻墙。https://github.com/PHPMailer/PHPMailer
3、将PHPMailer-master下面的class.phpmailer.php和class.smtp.php复制到ThinkPHP\Extend\Vendor\PHPMailer下面,没有文件夹则自己新建文件夹。
如图:

4、在config中写入邮箱发送的配置信息
//邮件配置
'THINK_EMAIL' => array(
'MAIL_HOST' =>'smtp.qq.com',//smtp服务器的名称
'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证
'MAIL_USERNAME' =>'你的发送邮箱@qq.com',//你的邮箱名
'MAIL_FROM' =>'你的发送邮箱@qq.com',//发件人地址
'MAIL_FROMNAME'=>'绍兴在线',//发件人姓名
'MAIL_PASSWORD' =>'发送邮箱的密码',//邮箱密码
'MAIL_CHARSET' =>'utf-8',//设置邮件编码
'MAIL_ISHTML' =>TRUE // 是否HTML格式邮件
),
5、在ThinkPHP\Common\function.php中写入公用的发送邮件的方法
/**
* 发送邮件
* @param $to 收件邮箱
* @param $title 标题
* @param $content 内容
* @return bool 返回结果
*/
function sendMail($to, $title, $content)
{
$obj = array();
if(!$_SESSION['MAIL']){
$_SESSION['MAIL']['Count'] = 0;
}else{
$_SESSION['MAIL']['Count'] = $_SESSION['MAIL']['Count'] + 1;
}
if(time()>$_SESSION['MAIL']['SendTime']){
if( $_SESSION['MAIL']['Count']<5){
$_SESSION['MAIL']['SendTime'] = time();
$config = C('THINK_EMAIL');
vendor('PHPMailer.class#phpmailer');
$mail = new PHPMailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
$mail->Host = $config['MAIL_HOST']; //smtp服务器的名称(这里以QQ邮箱为例)
$mail->Port = '465';
$mail->SMTPSecure = 'ssl';
$mail->SMTPAuth = $config['MAIL_SMTPAUTH']; //启用smtp认证
$mail->Username = $config['MAIL_USERNAME']; //你的邮箱名
$mail->Password = $config['MAIL_PASSWORD']; //邮箱密码
$mail->From = $config['MAIL_FROM']; //发件人地址(也就是你的邮箱地址)
$mail->FromName = $config['MAIL_FROMNAME']; //发件人姓名
$mail->AddAddress($to, "尊敬的客户");
$mail->WordWrap = 50; //设置每行字符长度
$mail->IsHTML($config['MAIL_ISHTML']); // 是否HTML格式邮件
$mail->CharSet = $config['MAIL_CHARSET']; //设置邮件编码
$mail->Subject = $title; //邮件主题
$mail->Body = $content; //邮件内容
$mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示
$obj = array(
'success' => true,
'info' => ($mail->Send())
);
}else{
$_SESSION['MAIL']['SendTime'] = time()+1800;
$_SESSION['MAIL']['Count'] = 0;
$obj = array(
'success' => false,
'info' => "邮箱验证发送过于频繁!"
);
}
}else{
$minTime = ($_SESSION['MAIL']['SendTime'] - time());
$obj = array(
'success' => false,
'info' => "等待".$minTime."秒后才可以发送!"
);
}
return $obj;
}
6、只要调用公共方法就好了。
注:如果无法发送可能是在qq邮箱中没有开启stmp。

原来的站点停运,整合到简书
2016年5月23日
网友评论