记录:使用PHPMailer在ThinkPHP3.2.3上实现发送邮件功能

PHP工作的第一件任务就是实现发送邮件功能。由于一年没碰过PHP,也没用过TP框架,内心有些忐忑。公司的老项目用的TP3.2.3框架开发的,首先把框架大致看了下,百度相关邮件类的资料,可喜的发现有PHPMailer这个可爱的函数包!

放入框架前首先测试一下,在PHPMailer根目录下创建test.php

<?php
header("content-type:text/html;charset=utf-8");
require("class.phpmailer.php"); 
$mail = new PHPMailer(); //建立邮件发送类
$address ="******@qq.com";//收件人地址
$mail->IsSMTP(); // 使用SMTP方式发送
$mail->Host = "smtp.163.com"; // 您的企业邮局域名
$mail->SMTPAuth = true; // 启用SMTP验证功能
$mail->Username = "155****26@163.com"; // 邮局用户名(请填写完整的email地址)
$mail->Password = "a123456"; // 邮箱授权码
$mail->Port=25;//端口号
$mail->CharSet='UTF-8'; //设置邮件的字符编码,这很重要,不然中文乱码

$mail->From = "155*****826@163.com"; //邮件发送者email地址
$mail->FromName = "test3";//发送人的名字
$mail->AddAddress("$address", "a");//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")
//$mail->AddReplyTo("", "");
 
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件
//$mail->IsHTML(true); // set email format to HTML //是否使用HTML格式
 
$mail->Subject = "PHPMailer测试邮件"; //邮件标题
$mail->Body = "Hello,这是测试邮件"; //邮件内容
$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; //附加信息,可以省略
 
if(!$mail->Send())
{
echo "邮件发送失败. <p>";
echo "错误原因: " . $mail->ErrorInfo;
exit;
}
 
echo "邮件发送成功";
测试网易邮箱均成功,QQ邮箱各种端口号、授权码、独立密码一一尝试均失败。

接下来就是整合到框架里了:

根据 此文Thinkphp3.2.3整合PHPMailer实现邮箱收发邮件( 兼容网易邮箱和QQ邮箱) 比葫芦画瓢,将PHPMailer函数包放在在\ThinkPHP\Library\Vendor里,然后创建/View/Form/Index.php

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
收件人邮箱:<input  type="text" name="mail"/>
标题:<input  type="text" name="title"/>
内容<input  type="text" name="content"/>
<input class="button" type="submit" value="发送"/>
</form>
</body>
</html>
Common创建公共函数Function.php
<?php
function sendMail($to, $title, $content) {
    Vendor('PHPMailer.PHPMailerAutoload');
    $mail = new PHPMailer(); //实例化
    $mail->IsSMTP(); // 启用SMTP
    $mail->Host=C('MAIL_HOST'); //smtp服务器的名称
    $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证
    $mail->Username = C('MAIL_USERNAME'); //发件人邮箱名
    $mail->Password = C('MAIL_PASSWORD') ; //163邮箱发件人授权密码
    $mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址)
    $mail->FromName = C('MAIL_FROMNAME'); //发件人姓名
    $mail->AddAddress($to,"尊敬的客户");
    $mail->WordWrap = 50; //设置每行字符长度
    $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件
    $mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码
    $mail->Subject =$title; //邮件主题
    $mail->Body = $content; //邮件内容
    $mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示
    return($mail->Send());
}

config.php添加配置

	'MAIL_HOST' =>'smtp.163.com',//smtp服务器的名称
	'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证
	'MAIL_USERNAME' =>'155****26@163.com',//发件人的邮箱名
	'MAIL_PASSWORD' =>'a123456',//163邮箱发件人授权密码	
	'MAIL_FROM' =>'155*****26@163.com',//发件人邮箱地址
	'MAIL_FROMNAME'=>'iLen',//发件人姓名
	'MAIL_CHARSET' =>'utf-8',//设置邮件编码
	'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件
最后执行Form控制器
class FormController extends Controller {
    public function index(){
        
        		if(SendMail($_POST['mail'],$_POST['title'],$_POST['content'])) {
        		$this->success('发送成功!');
    			} else {
        		$this->error('发送失败');}
    }
}
  
运行:

http://localhost/ThinkPHP/index.php/Home/Form/
却直接跳转 

index操作里代码改为

if(!IS_POST){
			$this->display();
	        
    	}else{
    		if(SendMail($_POST['mail'],$_POST['title'],$_POST['content'])) {
        		$this->success('发送成功!');
    			} else {
        		$this->error('发送失败');
    		}
    	}
即可成功跳转


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值