ThinkPHP 3.2 DEMO案例系列【phpmailer批量发送邮件】

时间:2023-03-10 07:13:50
ThinkPHP 3.2 DEMO案例系列【phpmailer批量发送邮件】

但是邮件和短信相比在一些场景依然有着重要的意义和优势;

1:零成本;发邮件没有费用;

2:内容丰富且量大;邮件可以长篇大论;图文并茂;

3:增加访问量;用户很容易通过邮件中的链接访问网站;

好了;下面来来为thinkphp集成邮件系统;

示例项目:https://github.com/Tinywan/ThinkPhpStudy

一、引入phpmail

从示例项目中复制两个文件到自己的项目;

/ThinkPHP/Library/Org/Nx/class.phpmailer.php ;
/ThinkPHP/Library/Org/Nx/class.smtp.php ;

二、设置配置项

 //***********************************邮件服务器**********************************
'EMAIL_FROM_NAME' => 'tinywan@163.com', // 发件人
'EMAIL_SMTP' => 'smtp.163.com', // smtp
'EMAIL_USERNAME' => 'tinywan@163.com', // 账号
'EMAIL_PASSWORD' => '你的密码 // 授权密码而不是登陆的密码

三、配置163箱:

    首先是要开启smtp服务:

ThinkPHP 3.2 DEMO案例系列【phpmailer批量发送邮件】

ThinkPHP 3.2 DEMO案例系列【phpmailer批量发送邮件】

配置文件中的信息在这里:

ThinkPHP 3.2 DEMO案例系列【phpmailer批量发送邮件】

注意:开启过程中是要设置一个授权密码,这里的授权密码也就是配置文件中需用的那个密码,否则的话否则,SMTP connect() failed

'EMAIL_PASSWORD'         => '你的密码 // 授权密码而不是登陆的密码

四、发送邮件的实际代码,这个在(ThinkPHP框架中的Function()函数中写着来)

/**
* 发送邮件
* @param string $address 需要发送的邮箱地址 发送给多个地址需要写成数组形式
* @param string $subject 标题
* @param string $content 内容
* @return boolean 是否成功
*/
function send_email($address,$subject,$content){
$email_smtp=C('EMAIL_SMTP');
$email_username=C('EMAIL_USERNAME');
$email_password=C('EMAIL_PASSWORD');
$email_from_name=C('EMAIL_FROM_NAME');
if(empty($email_smtp) || empty($email_username) || empty($email_password) || empty($email_from_name)){
return array("error"=>1,"message"=>'邮箱配置不完整');
}
require './ThinkPHP/Library/Org/Nx/class.phpmailer.php';
require './ThinkPHP/Library/Org/Nx/class.smtp.php';
$phpmailer=new \Phpmailer();
// 设置PHPMailer使用SMTP服务器发送Email
$phpmailer->IsSMTP();
// 设置为html格式
$phpmailer->IsHTML(true);
// 设置邮件的字符编码'
$phpmailer->CharSet='UTF-8';
// 设置SMTP服务器。
$phpmailer->Host=$email_smtp;
// 设置为"需要验证"
$phpmailer->SMTPAuth=true;
// 设置用户名
$phpmailer->Username=$email_username;
// 设置密码
$phpmailer->Password=$email_password;
// 设置邮件头的From字段。
$phpmailer->From=$email_username;
// 设置发件人名字
$phpmailer->FromName=$email_from_name;
// 添加收件人地址,可以多次使用来添加多个收件人
if(is_array($address)){
foreach($address as $addressv){
$phpmailer->AddAddress($addressv);
}
}else{
$phpmailer->AddAddress($address);
}
// 设置邮件标题
$phpmailer->Subject=$subject;
// 设置邮件正文
$phpmailer->Body=$content;
// 发送邮件。
if(!$phpmailer->Send()) {
$phpmailererror=$phpmailer->ErrorInfo;
return array("error"=>1,"message"=>$phpmailererror);
}else{
return array("error"=>0);
}
}

五、发送邮件调用函数示例:

 /**
* 发送邮件
*/
public function send_email()
{
$name = I('post.name', '这是一份测试邮件名称');
$address = I('post.address', '这是一份测试邮件发送的地址');
$phone = I('post.phone', '13669361192');
$email = '2680737855@qq.com';
$str = <<<html
姓名:$name <br>
地址:$address <br>
手机号:$phone
html;
$result = send_email($email, '这个邮件是我用来做测试的,亲!', $str);
if ($result['error'] == 1) {
var_dump($result);
die;
}
var_dump('发送完成');
}

基本来源:http://baijunyao.com