如何使用thinkphp发送邮件
Thinkphp3.2 PHPMailer 发送邮件结合QQ企业邮箱发送邮件
下载附件PHPMailer解压到ThinkPHP\Library\Vendor
在Common文件夹新建function.php
/**
* 邮件发送函数
*/
function sendMail($to, $title, $content) {
Vendor('PHPMailer.PHPMailerAutoload');
$mail = new PHPMailer(); //实例化
$mail-IsSMTP(); // 启用SMTP
$mail-Host=C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例)
$mail-SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证
$mail-Username = C('MAIL_USERNAME'); //你的邮箱名
$mail-Password = C('MAIL_PASSWORD') ; //邮箱密码
$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.exmail.qq.com',//smtp服务器的名称
'MAIL_SMTPAUTH' =TRUE, //启用smtp认证
'MAIL_USERNAME' ='jufengjituan@gsjfjt.com',//你的邮箱名
'MAIL_FROM' ='jufengjituan@gsjfjt.com',//发件人地址
'MAIL_FROMNAME'='聚丰集团',//发件人姓名
'MAIL_PASSWORD' ='******',//邮箱密码
'MAIL_CHARSET' ='utf-8',//设置邮件编码
'MAIL_ISHTML' =TRUE, // 是否HTML格式邮件
最后就是使用PHPMailer发送邮件
form action="__URL__/add" method="post" enctype="multipart/form-data"
邮箱:input type="text" id="mail" name="mail"/
标题:input type="text" id="title" name="title"/
内容input type="text" id="content" name="content"/
input class="4d50-0f0d-f153-c21b button" type="submit" value="发送" style="margin: 0 auto;display: block;"/
/form
public function add(){
if(SendMail($_POST['mail'],$_POST['title'],$_POST['content']))
$this-success('发送成功!');
else
$this-error('发送失败');
}
thinkphp发送邮件需要开启什么设置
邮件配置
'THINK_EMAIL' = array(
'SMTP_HOST' = 'smtp.163.com', //SMTP服务器
'SMTP_PORT' = '465', //SMTP服务器端口
'SMTP_USER' = 'ihtxt@163.com', //SMTP服务器用户名
'SMTP_PASS' = 'ihtxt.com', //SMTP服务器密码
'FROM_EMAIL' = 'ihtxt@163.com', //发件人EMAIL
'FROM_NAME' = '爱红电子书', //发件人名称
'REPLY_EMAIL' = 'ihtxt@163.com', //回复EMAIL(留空则为发件人EMAIL)
'REPLY_NAME' = '爱红电子书', //回复名称(留空则为发件人名称)
),
注:推荐使用163邮件,不要使用QQ邮箱,邮件配置一定要正确
可以将该函数放到ThinkPHPCommoncommon.php。也可以放到你生成的项目文件的Commoncommon.php。不过只能放到一个地方,否则就会报函数重定义错误。
/**
* 系统邮件发送函数
* @param string $to 接收邮件者邮箱
* @param string $name 接收邮件者名称
* @param string $subject 邮件主题
* @param string $body 邮件内容
* @param string $attachment 附件列表
* @return boolean
*/
function think_send_mail($to, $name, $subject = '', $body = '', $attachment = null){
$config = C('THINK_EMAIL');
vendor('PHPMailer.class#phpmailer'); //从PHPMailer目录导class.phpmailer.php类文件
$mail = new PHPMailer(); //PHPMailer对象
$mail-CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail-IsSMTP(); // 设定使用SMTP服务
$mail-SMTPDebug = 0; // 关闭SMTP调试功能
// 1 = errors and messages
// 2 = messages only
$mail-SMTPAuth = true; // 启用 SMTP 验证功能
$mail-SMTPSecure = 'ssl'; // 使用安全协议
$mail-Host = $config['SMTP_HOST']; // SMTP 服务器
$mail-Port = $config['SMTP_PORT']; // SMTP服务器的端口号
$mail-Username = $config['SMTP_USER']; // SMTP服务器用户名
$mail-Password = $config['SMTP_PASS']; // SMTP服务器密码
$mail-SetFrom($config['FROM_EMAIL'], $config['FROM_NAME']);
$replyEmail = $config['REPLY_EMAIL']?$config['REPLY_EMAIL']:$config['FROM_EMAIL'];
$replyName = $config['REPLY_NAME']?$config['REPLY_NAME']:$config['FROM_NAME'];
$mail-AddReplyTo($replyEmail, $replyName);
$mail-Subject = $subject;
$mail-AltBody = "为了查看该邮件,请切换到支持 HTML 的邮件客户端";
$mail-MsgHTML($body);
$mail-AddAddress($to, $name);
if(is_array($attachment)){ // 添加附件
foreach ($attachment as $file){
is_file($file) $mail-AddAttachment($file);
}
}
return $mail-Send() ? true : $mail-ErrorInfo;
}
$r = think_send_mail('要发送的邮箱','发送人名称,即你的名称','文件标题','邮件内容');
windows下在php.ini中去掉下面的分号
extension=php_openssl.dll
并将allow_url_fopen = Off改为
allow_url_fopen = On
thinkphp3.1怎么做发送邮件
ThinkPHP邮件发送函数方法
/**
* 系统邮件发送函数
* @param string $to 接收邮件者邮箱
* @param string $name 接收邮件者名称
* @param string $subject 邮件主题
* @param string $body 邮件内容
* @param string $attachment 附件列表
* @return boolean
*/
function think_send_mail($to, $name, $subject = '', $body = '', $attachment = null){
$config = C('THINK_EMAIL');
vendor('PHPMailer.class#phpmailer'); //从PHPMailer目录导class.phpmailer.php类文件
$mail = new PHPMailer(); //PHPMailer对象
$mail-CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail-IsSMTP(); // 设定使用SMTP服务
$mail-SMTPDebug = 0; // 关闭SMTP调试功能
// 1 = errors and messages
// 2 = messages only
$mail-SMTPAuth = true; // 启用 SMTP 验证功能
$mail-SMTPSecure = 'ssl'; // 使用安全协议
$mail-Host = $config['SMTP_HOST']; // SMTP 服务器
$mail-Port = $config['SMTP_PORT']; // SMTP服务器的端口号
$mail-Username = $config['SMTP_USER']; // SMTP服务器用户名
$mail-Password = $config['SMTP_PASS']; // SMTP服务器密码
$mail-SetFrom($config['FROM_EMAIL'], $config['FROM_NAME']);
$replyEmail = $config['REPLY_EMAIL']?$config['REPLY_EMAIL']:$config['FROM_EMAIL'];
$replyName = $config['REPLY_NAME']?$config['REPLY_NAME']:$config['FROM_NAME'];
$mail-AddReplyTo($replyEmail, $replyName);
$mail-Subject = $subject;
$mail-MsgHTML($body);
$mail-AddAddress($to, $name);
if(is_array($attachment)){ // 添加附件
foreach ($attachment as $file){
is_file($file) $mail-AddAttachment($file);
}
}
return $mail-Send() ? true : $mail-ErrorInfo;
此函数只能在ThinkPHP中使用且需要phpmailer扩展的支持;
phpmailer扩展的放置目录为 ThinkPHP/Extend/Vendor/PHPMailer/class.phpmailer.php
phpmail的下载地址:
使用此函数 必须在项目中加入以下配置项
//邮件配置
'THINK_EMAIL' = array(
'SMTP_HOST' = 'smtp.aaa.com', //SMTP服务器
'SMTP_PORT' = '465', //SMTP服务器端口
'SMTP_USER' = 'mail@aaa.com', //SMTP服务器用户名
'SMTP_PASS' = 'password', //SMTP服务器密码
'FROM_EMAIL' = 'mail@aaa.com', //发件人EMAIL
'FROM_NAME' = 'ThinkPHP', //发件人名称
'REPLY_EMAIL' = '', //回复EMAIL(留空则为发件人EMAIL)
'REPLY_NAME' = '', //回复名称(留空则为发件人名称)
),
关于ThinkPHP3.2.3邮箱验证的方法
?php
/**
* 自动验证
* @param $data 要验证的数据
* @return bool
*/
public function _validate($data){
if(empty($this-_valid)){
return true;
}
$this-error = array();
foreach($this-_valid as $k =$v){
switch($v[1]){
case 1:
if(!isset($data[$v[0]])){
$this-error[] = $v[2];
}
if(!isset($v[4])){
$v[4] = '';
}
if(!$this-check(isset($data[$v[0]]),$v[3],$v[4])){
$this-error[] = $v[2];
return false;
}
break;
case 0:
if(isset($data[$v[0]])){
if(!$this-check($data[$v[0]],$v[3],$v[4])){
$this-error[] = $v[2];
return false;
}
}
break;
case 2:
if(isset($data[$v[0]]) !empty($data[$v[0]])){
if(!$this-check($data[$v[0]],$v[3],$v[4])){
$this-error[] = $v[2];
return false;
}
}
break;
}
}
return true;
}
/**
* 进行规则验证
* @param $value 待验证的值
* @param $rule 使用的规则
* @param $param 参数
* @return mixed 返回的结果
*/
public function check($value,$rule,$param=''){
switch($rule){
case 'require':
return !empty($value);
break;
case 'number':
return is_numeric($value);
break;
case 'in':
return in_array($value,explode(',',$param));
break;
case 'length':
list($min,$max) = explode(',',$param);
return strlen($value) = $max $min = strlen($value);
break;
case 'between':
list($min,$max) = explode(',',$param);
return $value = $max $min = $value;
break;
case 'email':
//这里没有使用正则表达是去判断,而是使用了php函数判断
return (filter_var($value, FILTER_VALIDATE_EMAIL) !==false);
break;
default:
return false;
}
}
?
tachment = null){ $config = C('THINK_EMAIL'); vendor('PHPMailer.class#phpmailer')
SERNAME'); //你的邮箱名 $mail-Password = C('MAIL_PASSWORD') ; //邮箱密码 $mail-From = C('MAIL_FROM'); //发件人地
$replyName = $config['REPLY_NAME']?$config['REPLY_NAME']:$config['FROM_NAME']; $mail-AddReplyTo($replyEmail, $replyName); $mail-S