[thinkphp使用phpmailer发送邮件]ThinkPHP使用PHPMailer发送邮件的例子

更新时间:2019-09-16    来源:thinkphp    手机版     字体:

【www.bbyears.com--thinkphp】

最近一直在用ThinkPHP框架开发项目, 一般进行用户注册的时候都会发送一封验证邮件, 验证注册. 在这次做的CRM客户管理系统中需要用到邀请注册这个功能, 团队管理员注册之后可通过邮件邀请团队的其他人员进行注册. 如何给团队人员发送邮件, 很流行的一个邮件发送类库就是PHPMailer.

1. 下载PHPmailer并解压到ThinkPHP\Extend\Vendor文件夹下

2. 用ThinkPHP自带的Vendor方法载入第三方类库

3. 配置相关参数.

4.为了方便随意调用, 在common.php创建一个发送邮件的函数, 之后就可以调用此函数发送邮件了

/**
 * 邮件发送
 */
function sendMail(){
    // 载入邮件发送类库
    Vendor("PHPMailer.PHPMailerAutoload");

    $mail = new PHPMailer;

    $mail->isSMTP();        //设置PHPMailer使用SMTP服务器发送Email
    $mail->Host = "smtp.163.com";   //指定SMTP服务器 可以是smtp.126.com, gmail, qq等服务器 自行查询
    $mail->SMTPAuth = true;
    $mail->CharSet="UTF-8";     //设置字符集 防止乱码
    $mail->Username = "username@163.com";  //发送人的邮箱账户
    $mail->Password = "xxxxxxxxxx";   //发送人的邮箱密码
    $mail->Port = 25;   //SMTP服务器端口

    $mail->From = "user@admin.com";            //发件人邮箱地址
    $mail->FromName = "在路上";                //发件人名称
    $mail->addAddress("guest@test.com");      // 收件人邮箱地址 此处可以发送多个

    $mail->WordWrap = 50;                                 // 换行字符数
    $mail->isHTML(true);                                  // 设置邮件格式为HTML

    $mail->Subject = "青岛XXX";       //邮件标题
    $mail->Body    = "尊敬的先生/女士:
非常抱歉,您接受到这封邮件是因您的好友邀请您加入我们的CRM系统体验当中,请点击以下链接注册账户######
如您没有相关意向,请忽略";

    if(!$mail->send()) {
        echo "邮件发送失败.";
        echo "错误信息: " . $mail->ErrorInfo;
    } else {
        echo "邮件发送成功";
    }
}


定义好函数之后,如果想发送邮件,直接调用 sendMail();

可把发送内容, 发送标题, 收件人全部设置为变量, 例如: sendMail($body, $title, $recipient)  收件人可为数组的形式, 在函数里面循环一下就搞定啦!!  SMTP服务器以及发件人的一些配置可以写到Conf\config.php文件中, 直接C()方法调用即可.


方法二,

第一步 先下载PHPMailer.class.php压缩包(本文上面有附件下载)

解压后会有如下的三个文件:

1.class.pop3.php
2.class.smtp.php
3.PHPMailer.class.php
PHPMailer.class.php这个文件就是核心的文件,把这个文件放到ThinkPHP的扩展包下路径如\下:ThinkPHP\Extend\Library

第二步 在ThinkPHP,common文件中新建一个common.php文件写入如下代码:

functionSendMail($address,$title,$message)
{
import("ORG.Net.PHPMailer");
$mail=newPHPMailer();
// 设置PHPMailer使用SMTP服务器发送Email
$mail->IsSMTP();
// 设置邮件的字符编码,若不指定,则为"UTF-8"
$mail->CharSet="UTF-8";
// 添加收件人地址,可以多次使用来添加多个收件人
$mail->AddAddress($address);
// 设置邮件正文
$mail->Body=$message;
// 设置邮件头的From字段。
$mail->From=C("MAIL_ADDRESS");
// 设置发件人名字
$mail->FromName="zyimm";
// 设置邮件标题
$mail->Subject=$title;
// 设置SMTP服务器。
$mail->Host=C("MAIL_SMTP");
// 设置为“需要验证”
$mail->SMTPAuth=true;
// 设置用户名和密码。
$mail->Username=C("MAIL_LOGINNAME");
$mail->Password=C("MAIL_PASSWORD");
// 发送邮件。
return($mail->Send());
第三步 在ThinkPHP,conf.php文件写入如下代码:

注意:以下是的我自己QQ邮箱的测试的,每个邮箱参数不同,具体以邮箱为准,qq邮箱的stmp需要自己到邮箱开启的。

returnarray(
//"配置项"=>"配置值"
"MAIL_ADDRESS"=>"799783009@qq.com", // 邮箱地址 
"MAIL_LOGINNAME"=>"799783009@qq.com", // 邮箱登录帐号
"MAIL_SMTP"=>"smtp.qq.com", // 邮箱SMTP服务器
"MAIL_PASSWORD"=>"******", // 邮箱密码
"SHOW_PAGE_TRACE"=>true,
);

第四步 剩下使用了。在ThinkPHP,IndexAction.class.php文件写入如下代码:

// 本类由系统自动生成,仅供测试用途
classIndexAction extendsAction {
publicfunctionindex(){
if(!empty($_POST["title"]) && !empty($_POST["content"])){
if(SendMail("597417106@qq.com",$_POST["tile"],$_POST["content"]))
echo"发送成功!";
else
echo"发送失败";
}
$this->assign("title","测试标题");
$this->display();
}
}
好了,就这么简单的

方法二算是一个标准的方法了,整体都放到thinkphp类中了,小编推荐使用第二种方案.

本文来源:http://www.bbyears.com/jiaocheng/68154.html