当前位置:首页 > CMS教程 > Thinkphp > 列表

ThinkPHP使用PHPMailer发送邮件的例子

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-08 09:44:37 浏览: 评论:0 

PHPMailer是一个邮件发送插件了,我们可以把PHPMailer安装包解压到Vendor目录中之后然后简单的配置就可以发邮件了,下面来看一个例子.

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

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

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

3.配置相关参数.

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

  1. /** 
  2.  * 邮件发送 
  3.  */ 
  4. function sendMail(){ 
  5.     // 载入邮件发送类库 
  6.     Vendor('PHPMailer.PHPMailerAutoload'); 
  7.     $mail = new PHPMailer; 
  8.     $mail->isSMTP();        //设置PHPMailer使用SMTP服务器发送Email 
  9.     $mail->Host = 'smtp.163.com';   //指定SMTP服务器 可以是smtp.126.com, gmail, qq等服务器 自行查询 
  10.     $mail->SMTPAuth = true; 
  11.     $mail->CharSet='UTF-8';     //设置字符集 防止乱码 
  12.     $mail->Username = 'username@163.com';  //发送人的邮箱账户 
  13.     $mail->Password = 'xxxxxxxxxx';   //发送人的邮箱密码 
  14.     $mail->Port = 25;   //SMTP服务器端口 
  15.     $mail->From = 'user@admin.com';            //发件人邮箱地址 
  16.     $mail->FromName = '在路上';                //发件人名称 
  17.     $mail->addAddress('guest@test.com');      // 收件人邮箱地址 此处可以发送多个 
  18.     $mail->WordWrap = 50;                                 // 换行字符数 
  19.     $mail->isHTML(true);                                  // 设置邮件格式为HTML 
  20.     $mail->Subject = '青岛XXX';       //邮件标题 
  21.     $mail->Body    = '尊敬的先生/女士:<br/>非常抱歉,您接受到这封邮件是因您的好友邀请您加入我们的CRM系统体验当中,请点击以下链接注册账户<a href=####>######</a><br/>如您没有相关意向,请忽略'
  22.     if(!$mail->send()) {  //开源软件:phpfensi.com 
  23.         echo '邮件发送失败.'
  24.         echo '错误信息: ' . $mail->ErrorInfo; 
  25.     } else { 
  26.         echo '邮件发送成功'
  27.     } 

定义好函数之后,如果想发送邮件,直接调用 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文件写入如下代码:

  1. functionSendMail($address,$title,$message
  2. import('ORG.Net.PHPMailer'); 
  3. $mail=newPHPMailer(); 
  4. // 设置PHPMailer使用SMTP服务器发送Email 
  5. $mail->IsSMTP(); 
  6. // 设置邮件的字符编码,若不指定,则为'UTF-8' 
  7. $mail->CharSet='UTF-8'
  8. // 添加收件人地址,可以多次使用来添加多个收件人 
  9. $mail->AddAddress($address); 
  10. // 设置邮件正文 
  11. $mail->Body=$message
  12. // 设置邮件头的From字段。 
  13. $mail->From=C('MAIL_ADDRESS'); 
  14. // 设置发件人名字 
  15. $mail->FromName='zyimm'
  16. // 设置邮件标题 
  17. $mail->Subject=$title
  18. // 设置SMTP服务器。 
  19. $mail->Host=C('MAIL_SMTP'); 
  20. // 设置为“需要验证” 
  21. $mail->SMTPAuth=true; 
  22. // 设置用户名和密码。 
  23. $mail->Username=C('MAIL_LOGINNAME'); 
  24. $mail->Password=C('MAIL_PASSWORD'); 
  25. // 发送邮件。 
  26. return($mail->Send()); 

第三步 在ThinkPHP,conf.php文件写入如下代码.

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

  1. returnarray( 
  2. //'配置项'=>'配置值' 
  3. 'MAIL_ADDRESS'=>'799783009@qq.com'// 邮箱地址   
  4. 'MAIL_LOGINNAME'=>'799783009@qq.com'// 邮箱登录帐号 
  5. 'MAIL_SMTP'=>'smtp.qq.com'// 邮箱SMTP服务器 
  6. 'MAIL_PASSWORD'=>'******'// 邮箱密码 
  7. 'SHOW_PAGE_TRACE'=>true, 
  8. ); 

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

  1. // 本类由系统自动生成,仅供测试用途 
  2. classIndexAction extendsAction { 
  3. publicfunctionindex(){ 
  4. if(!emptyempty($_POST['title']) && !emptyempty($_POST['content'])){ 
  5. if(SendMail("597417106@qq.com",$_POST['tile'],$_POST['content'])) 
  6. echo'发送成功!'
  7. else 
  8. echo'发送失败'
  9. $this->assign('title','测试标题'); 
  10. $this->display(); 

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

Tags: ThinkPHP邮件 PHPMailer发送邮件

分享到: