ThinkPHP3.2中配置使用PHPMiler发送邮件最新整理

来源:互联网 发布:知乎 讲师 翻译 编辑:程序博客网 时间:2024/05/17 23:55

                  最近学习PHP的发送邮件功能,在ThinkPHP最新的版本ThinkPHP3.2下使用PHPMailer发送邮件一直出现各种问题,现将出现的情况整理如下

  一:使用配置

1.以搭建好的ThinkPHP3.2框架及目录结构和PHPMailer5.1源码包,将PHPMailer压缩包解压并复制到项目ThinkPHP\Library\Vendor下并更名为PHPMailer,项目配置完毕

2.修改配置文件php.ini打开extension=php_openssl.dll(即去掉前面的分号)

所需基本配置完毕

二:示例代码

例如在IndexController的index方法中添加以下代码

注意:使用前请务必将自己的免费smtp邮箱设置开启smtp的功能,否则会一直报用户名和密码错误

header('Content-type:text/html;charset=utf-8');    //从PHPMailer目录导入class.phpmailer.php类文件     vendor("PHPMailer.class#phpmailer");    $config = array(        'host'=>'smtp.qq.com',        'port'=>'465',        'user'=>'xxx@qq.com',//自己免费smtp服务器的的用户名        'password'=>'xxx',//密码        'from'=>'xxx@qq.com',//发件人        'fromname'=>'加油',//发件人名称 ); //这里的配置信息可以添加到项目的配置文件config.php中     $mail=new \PHPMailer(); //这反斜线是必须的,以前就是这里一直报找不到类的错误,因为没有使用名称空间这里加上反斜线表示全局名称空间     // 设置PHPMailer使用SMTP服务器发送Email    $mail->IsSMTP();    $mail->SMTPSecure = "ssl";    //打开SSL     $mail->SMTPDebug  = 1;                     // 启用SMTP调试功能     // 设置邮件的字符编码,若不指定,则为'UTF-8'    $mail->CharSet='UTF-8';     // 添加收件人地址,可以多次使用来添加多个收件人    $mail->AddAddress("xxx@qq.com","xx");    date_default_timezone_set('PRC');//设置默认时区否则会出现时间不一致问题 $time=date("Y年m月d日 H:i.s"); echo $time;    // 设置邮件正文    $mail->Body="正在测试发送邮件功能!".$time;     // 设置邮件头的From字段。    $mail->From=$config['from'];     // 设置发件人名字    $mail->FromName=$config['fromname'];     // 设置邮件标题    $mail->Subject="测试功能";     // 设置SMTP服务器。    $mail->Host=$config['host']; $mail->Port= $config['port'];        // 设置为"需要验证"    $mail->SMTPAuth=true;     // 设置用户名和密码。    $mail->Username=$config['user'];    $mail->Password=$config['password'];    // 发送邮件。  if($mail->Send()){  echo "发送成功!";  }else{  echo "发送失败";  }

这里都写到控制器的一个方法里,你可以根据情况自己定制将其分离开来,祝您成功,编程顺利!!

0 0
原创粉丝点击