文档章节

thinkphp集成系列之phpmailer批量发送邮件

白俊遥
 白俊遥
发布于 2016/05/29 13:50
字数 711
阅读 160
收藏 0

前段时间写了一篇博客:thinkphp集成系列之短信验证码、订单通知

说了这是一个短信通知泛滥的年代;大部分网站的邮箱注册都已经被短信注册所取代;

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

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

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

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

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

示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

一:引入phpmail

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

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

不要从官网上下载;因为下载的phpmail直接引入thinkphp是有一些坑会报错的;

具体报什么错;年代久远;当年整合的时候没有记录;

二:设置配置项

/Application/Common/Conf/config.php

    'EMAIL_FROM_NAME'        => '', // 发件人
    'EMAIL_SMTP'             => '', // SMTP服务器
    'EMAIL_USERNAME'         => '', // 账号
    'EMAIL_PASSWORD'         => '', // 密码

如果使用163邮箱;此处有一个坑;首先是要开启smtp;

白俊遥博客

白俊遥博客

开启过程中是要设置一个授权密码;开启完成;又一个坑也就同步挖好了;

配置项中的EMAIL_PASSWORD 指的不是163邮箱的登录密码;而是授权密码;

否则SMTP connect() failed;

三:发送邮件

/**
 * 发送邮件
 * @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);
    }
}

 

发送邮件调用函数;

send_email('baijunyao@baijunyao','邮件标题','邮件内容');
// 如果群发邮件 则传入数组即可
$emails=array('b1@baijunyao.com','b2@baijunyao.com');
send_email($emails,'邮件标题','邮件内容');

 

本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://baijunyao.com                        

© 著作权归作者所有

白俊遥

白俊遥

粉丝 18
博文 58
码字总数 28701
作品 3
朝阳
程序员
私信 提问
加载中

评论(0)

将PHPMailer整合到ThinkPHP 3.2 中实现SMTP发送邮件

将PHPMailer整合到ThinkPHP 3.2 中实现SMTP发送邮件 ThinkPHP没有邮件发送的功能,于是,我就想了想,就将PHPMailer整合到ThinkPHP中吧。 PHPMailer是不符合ThinkPHP规范的插件程序,所以,我...

BearCatYN
2014/08/08
1W
0
《PHP发送邮件PHPMailer》系列分享专栏

《PHP发送邮件PHPMailer》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201726.html 文章 PHPMailer邮件类利用smtp.163.com发送邮件方法 PHPMailer安装方法及简...

开元中国2015
2018/11/05
132
0
ThinkPHP 中使用 PHPMailer 发送邮件 支持163和QQ邮箱等

PHP是自带可以发送邮件的Mail()函数的,但需要在php.ini配置。本文将介绍一种简单的通过PHPMailer发送邮件的方法。   而PHPMailer是一个用于发送电子邮件的PHP函数包,它可以使用SMTP的方法...

freedonn
2014/04/25
889
1
ThinkPHP结合PHPMailer自动发送邮件功能

在最近的一个case中,是一个类OA的项目,客户需要有邮件提醒。整个的程序架构考虑敏捷开发,使用了ThinkPHP,因为在之前做JSP的时候用过PHPMailer,所以就考虑将PHPMailer引入进来。 具体的方...

张志浩
2012/10/08
226
0
Thinkphp3.2 PHPMailer 发送邮件

Thinkphp3.2 PHPMailer 发送邮件结合QQ企业邮箱发送邮件 下载附件PHPMailer解压到ThinkPHPLibraryVendor 在Common文件夹新建function.php /** * 邮件发送函数 */ function sendMail($to, $t...

张悟空
2015/01/30
736
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu 18.04 的网络配置

netplan简介 目前,ubuntu18.04上使用了netplan 作为网络配置工具;在终端上配置网络参数跟之前的版本有比较大的差别 Netplan工作流程如下图所示;通过读取 /etc/netplan/*.yaml 下的配置文件...

osc_10loka5t
4分钟前
3
0
Docker底层网络经典文章分享

说明 关于 docker 底层网络的原理介绍,网上有很多的博客等资源,下面分享些经典实例文章, 望大家共同进步~ 分享 分享一 理解Docker单机容器网络 分享二 理解Docker跨多主机容器网络 大佬的...

osc_4myehtgl
6分钟前
0
0
VMWare Workstation上安装CentOS 8.1/RHEL 8.1 Linux实战系列

Linux系统运维实战系列 CentOS 8/RHEL 8 Linux系统实战系列原创持续更新中。。。。。。 请关注我的博客: grand.blog.51cto.com 1.下载CentOS8.1镜像: 实验虚拟机软件和CentOS8.1 ISO系统镜像...

osc_bskubcvl
6分钟前
0
0
在 Linux 上安装 Adobe Flash Player

1、访问flash官网,点击下载,选择你的操作系统和flash版本 2、下载后,解压下载的压缩包 tar -zx -f install_flash_player_11_linux.x86_64.tar.gz #解压下载好的压缩包 3、安装火狐浏览...

osc_xs2d5ls9
8分钟前
5
0
在 Linux 上安装 Adobe Flash Player

1、访问flash官网,点击下载,选择你的操作系统和flash版本 2、下载后,解压下载的压缩包 tar -zx -f install_flash_player_11_linux.x86_64.tar.gz #解压下载好的压缩包 3、安装火狐浏览...

osc_3iv3c4fo
10分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部