phpmailer类的再封装
<?php
use PHPMailer\PHPMailer\PHPMailer;
class Email
{
   const SMTPDebug  = 2;
   const HOST       = 'smtp.qq.com';
   const USERNAME   = 'username';
   const PASSOWRD   = 'password';
   const CHARSET    = 'UTF-8';
   const SMTPAUTH   = true;
   const ISHTML     = true;
   const SMTPSECURE = 'tls';
   const PORT       = 587;
   static $addressee = array();
   static $sender    = array();
   static $cc        = array();
   static $bcc       = array();
   static $attachment= array();
   static $title     = '';
   static $body      = '';
   static $altBody   = '';
   private $mail     = null;
   function __construct()
   {
       $this->mail = new PHPMailer();
   }
   //初始化参数
   public function start()
   {
       $this->mail->SMTPDebug   = self::SMTPDebug;
       $this->mail->Host        = self::HOST;
       $this->mail->CharSet     = self::CHARSET;
       $this->mail->SMTPAuth    = self::SMTPAUTH;
       $this->mail->Username    = self::USERNAME;
       $this->mail->Password    = self::PASSOWRD;
       $this->mail->SMTPSecure  = self::SMTPSECURE;
       $this->mail->Port        = self::PORT;
       $this->mail->isHTML(self::ISHTML);
   }
   //发送人
   public function setSender($address,$senderName = '')
   {
       self::$sender['a'] = $address;
       self::$sender['n'] = $senderName;
   }
    //收件人回复的地址
    public function setReplyAddress($address = '', $replayName = '')
    {
        self::$sender['a'] = $address;
        self::$sender['n'] = $replayName;
    }
   //单个接收人
   public function setAddressee($address,$recName = '')
   {
       call_user_func_array([$this, 'setAddress'],['addressee',$address, $recName]);
   }
   //多个接收人
   public function setManyAddressee($array)
   {
       array_walk($array,function($v, $k){
           $this->setAddressee($v);
       });
   }
   //抄送单个
   public function setCC($address = '', $name = '')
   {
       call_user_func_array([$this, 'setAddress'],['cc',$address, $name]);
   }
   //抄送多个
   public function setManyCC($array)
   {
       array_walk($array,function($v, $k){
           $this->setCC($v);
       });
   }
   //暗抄送单个
   public function setBCC($address = '', $name = '')
   {
       call_user_func_array([$this, 'setAddress'],['bcc',$address, $name]);
   }
   //暗抄送单个
   public function setManyBCC($array)
   {
       array_walk($array,function($v, $k){
           $this->setBCC($v);
       });
   }
   //附件单个
   public function setAttachment($address, $newName = '')
   {
       call_user_func_array([$this, 'setAddress'],['attachment',$address, $newName]);
   }
   //附件多个
   public function setManyAttachment($array)
   {
       array_walk($array,function($v, $k){
           $this->setAttachment($v);
       });
   }
   public function setAddress($param, $address, $name)
   {
       array_push(self::${$param}, [
               'a'=>$address,'n'=>$name
           ]
       );
   }
   public function setContent($title = '', $body='', $altBody='')
   {
       self::$title     = $title;
       self::$body      = $body;
       self::$altBody   = $altBody;
   }
   //发送邮件
   public function send()
   {
       try {
           $this->mail->isSMTP();
           $this->start();
           $this->mail->setFrom(self::$sender['a'], self::$sender['n']);
           $this->mail->addReplyTo(self::$sender['a'], self::$sender['n']);
           $this->addAddress(self::$addressee,'addAddress');
           $this->addAddress(self::$bcc,'addBCC');
           $this->addAddress(self::$cc,'addCC');
           $this->addAddress(self::$attachment,'addAttachment');
           $this->mail->Subject = self::$title;
           $this->mail->Body    = self::$body;
           $this->mail->AltBody = self::$altBody;
           $this->mail->send();
           $this->mail->isSMTP();
       }catch (Exception $e){
           echo 'Mailer Error: ' . $this->mail->ErrorInfo;
       }
   }
   public function addAddress($address,$func)
   {
       foreach ($address as $item){
           $item['a'] && $this->mail->{$func}($item['a'], $item['n']);
       }
   }
}
$a = new Email();
$a->setSender('xxxxx@qq.com','发送者');//发送人
$a->setManyAddressee(['xxxxxxx@qq.com','aaaa@qq.com']);//多个收件人
$a->setManyAttachment(['a.jpg','b.jpg']);//多个附件
$a->setManyCC(['jjj@163.com']);//抄送
$a->setContent('我是标题','<h2>我是内容</h2>');
$a->send();
												
											phpmailer类的再封装的更多相关文章
- 打印 Logger 日志时,需不需要再封装一下工具类?
		
在开发过程中,打印日志是必不可少的,因为日志关乎于应用的问题排查.应用监控等.现在打印日志一般都是使用 slf4j,因为使用日志门面,有助于打印方式统一,即使后面更换日志框架,也非常方便.在 < ...
 - 多个类的DLL封装及调用
		
#define FaceLIBDLL #include "stdafx.h" #include "facedll.h" #include <opencv2 ...
 - iOS开发之网络请求(基于AFNetworking的再封装)
		
最近一直很忙也没有什么时间写博客了.放假了休息一下,就写一篇博客来总结一下最近做项目中出现过的问题吧!!! 首先,在项目中我的起到了什么作用,无非就是把美工(UI设计师)给我们的图显示出来,然后再和服 ...
 - linux 下 用phpmailer类smtp发送邮件始终不成功,提示:ERROR: Failed to co
		
https://zhidao.baidu.com/question/509191264.html?fr=iks&word=PHPMailerSMTP+connect()+failed& ...
 - 把jQuery的类、插件封装成seajs的模块的方法
		
这篇文章主要介绍了把jQuery的类.插件封装成seajs的模块的方法,需要的朋友可以参考下 注:本文使用的seajs版本是2.1.1 一.把Jquery封装成seajs的模块 define(func ...
 - Http请求封装(对HttpClient类的进一步封装,使之调用更方便。另外,此类管理唯一的HttpClient对象,支持线程池调用,效率更高)
		
package com.ad.ssp.engine.common; import java.io.IOException; import java.util.ArrayList; import jav ...
 - 对Zlib单元进行再封装
		
对Zlib单元进行再封装 低版本DELPHI,如D7,ZLIB.pas单元封装的很简陋,因此有必要再封装,以增加使用的便利性. 高版本DELPHI,zlib.pas本身提供的接口已经相当完善. Zli ...
 - python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装
		
前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...
 - 关于Spring-JDBC测试类的简单封装
		
关于Spring-JDBC测试类的简单封装 1.简单封装 /** * Created with IntelliJ IDEA. * * @Author: Suhai * @Date: 2022/04/0 ...
 
随机推荐
- 二叉排序树思想及C语言实现
			
转自: http://blog.chinaunix.net/uid-22663647-id-1771796.html 1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找( ...
 - 使用dtd--属性声明
			
<!ATTLIST 元素名 属性名称 属性类型 属性特点> 1.属性类型 类型 含义 CDATA 纯文本 enumerated 枚举类型 ID 以属性的方式唯一标识改元素,必须以字母开头 ...
 - OnDeserializedAttribute 不能作用于 Xml Serialization 上
			
在做测试的时候习惯用xml serialization观察结果.想当然的认为OnDeserialized Attribute 可以同样的使用,但是其实Xml Serialization 并没有实现相对 ...
 - Sharepoint2010新建一个用户的方法
			
最近在做关于SharePoint的相关开发,在开发中需要用到测试用户进行相关权限的测试,所以就需要创建一个新的用户进行,但是在网上找了很久都没有找到关于创建一个新用户的资料,最后终于在http://w ...
 - 从零开始的全栈工程师——js篇(闭包)
			
闭包是js中的一大特色,也是一大难点.简单来说,所谓闭包就是说,一个函数能够访问其函数外部作用域中的变量. 闭包的三大特点为: 1.函数嵌套函数 2.内部函数可以访问外部函数的变量 3.参数和变量不会 ...
 - DIV三列同行
			
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - 转:Windows任务计划实现自动执行ArcGIS相关功能
			
今天一不小心点开了Windows任务计划,以前咩有怎么用过,发现还挺好用,于是想到了以前用户的一些问题 1:用户环境使用ArcSDE服务连接,每次运行到一定的负载量(可能是几天),就会很慢,用户就喜欢 ...
 - PhoneGap&jQuery Mobile应用开发环境配置(For Android)
			
关于移动应用为什么用PhoneGap和jQuery Mobile本文不再赘述,有兴趣的童鞋可以自行问“度娘”,有很多这方面的文章.本文主要介绍PhoneGap&jQuery Mobile移动应 ...
 - 关于form的action路径填写
			
一:可以是相对路径: 1.action="<%=request.getContextPath() %>/html/index.html" <%=request. ...
 - 我的ORM框架
			
任何系统的基础,都可以算是各种数据的增删改查(CRUD).最早操作数据是直接在代码里写SQL语句,后来出现了各种ORM框架.C#下的ORM框架有很多,如微软自己的Entity Framework.第三 ...