ThinkPHP使用Phpmail发送邮件

羽化
2016-05-23 / 0 评论 / 403 阅读 / 正在检测是否收录...

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下面,没有文件夹则自己新建文件夹。

如图:
4445477-eefc13afc2aaeac3.png

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。
4445477-e3cf81b406b25cde.png

0

评论 (0)

取消