ThinkPHP使用PHPMailer发送邮件的例子

作者:袖梨 2022-06-24

最近一直在用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 = '[email protected]';  //发送人的邮箱账户
    $mail->Password = 'xxxxxxxxxx';   //发送人的邮箱密码
    $mail->Port = 25;   //SMTP服务器端口

    $mail->From = '[email protected]';            //发件人邮箱地址
    $mail->FromName = '在路上';                //发件人名称
    $mail->addAddress('[email protected]');      // 收件人邮箱地址 此处可以发送多个

    $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'=>'[email protected]', // 邮箱地址 
'MAIL_LOGINNAME'=>'[email protected]', // 邮箱登录帐号
'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("[email protected]",$_POST['tile'],$_POST['content']))
echo'发送成功!';
else
echo'发送失败';
}
$this->assign('title','测试标题');
$this->display();
}
}
好了,就这么简单的

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

相关文章

精彩推荐