自己写的一个邮件发送类,可加附件
这个类集成在我写的一个框架里,但是为了松耦合性所有的LIBRARY可以独立拿来立刻使用
里面的邮件发送类拿来分享给大家
最后还要说一下 暂时还没支持SSL 目前够用了 以后要用再说...
分享下代码
-
<?php
-
// +------------------------------------------------
-
// | Travel - 1.1
-
// +------------------------------------------------
-
// | Copyright (c) 2014 All rights reserved.
-
// +------------------------------------------------
-
// | Author: XiaoZhi <491434308@qq.com>
-
// +------------------------------------------------
-
-
// +-----------------------
-
// | 电子邮件类
-
// +-----------------------
-
-
/**
-
* 使用方法:
-
* $test = $this->email->envelope($rc) //填写信封,三个参数,第一个收件人必选,必须数组形式支持多个 2,3可选 数组形式支持多个 2-抄送 3-密送
-
// +------------------------------------------------
-
// | Travel - 1.0 Beat
-
// +------------------------------------------------
-
// | Copyright (c) 2014 All rights reserved.
-
// +------------------------------------------------
-
// | Author: XiaoZhi <travelphp@163.com>
-
// +------------------------------------------------
-
-
// +-----------------------
-
// | 电子邮件类
-
// +-----------------------
-
-
/**
-
* 使用方法:
-
*
-
*/
-
-
class Email{
-
-
/*发送配置信息*/
-
public $smtp; //SMTP地址
-
public $port; //SMTP端口
-
public $username; //发送者邮箱账号
-
public $password; //发送者邮箱密码
-
public $sender; //发送者邮箱
-
public $sendname; //发送者名称
-
public $charset;
-
/*接收配置信息*/
-
public $rc; //邮件接收者 数组
-
public $cc; //抄送 数组
-
public $bcc; //密送 数组
-
public $subject; //标题
-
public $content; //内容
-
public $append; //附件
-
public $content_mime; //内容类型
-
-
-
/*相关属性*/
-
private $rcpt; //接收者并集,用于设置RCPT
-
private $handle; //socket连接句柄
-
private $request; //请求命令行
-
private $errno; //错误号
-
private $errstr; //错误描述
-
-
-
/**
-
* 初始化SMTP服务器信息
-
* @param array $opts SMTP服务器配置,格式如下:
-
* Array(
-
* [smtp] => 'smtp服务器地址',
-
* [port] => '端口号码',
-
* [username] => '发送者smtp登陆账号',
-
* [password] => '登陆密码',
-
* [sender] => '发送者邮箱',
-
* [sendname] => '发送者名称'
-
* )
-
*/
-
public function __construct($opts) {
-
if(!is_array($opts)){
-
trigger_error('Email:初始化参数只接受数组形式',E_USER_ERROR);
-
}
-
if(empty($opts['smtp'])){
-
trigger_error('Email:SMTP服务器地址不能为空',E_USER_ERROR);
-
}
-
$this->smtp = $opts['smtp'];
-
if($this->is_email($opts['sender']) !== true){
-
trigger_error('Email:发送者邮箱不合法',E_USER_ERROR);
-
}
-
$this->sender = $opts['sender'];
-
$this->port = empty($opts['port']) ? 25 : $opts['port'];
-
$this->username = empty($opts['username']) ? null : $opts['username'];
-
$this->password = empty($opts['password']) ? null : $opts['password'];
-
$this->sendname = empty($opts['sendname']) ? '' : $opts['sendname'];
-
$this->socket_timeout = empty($opts['socket_timeout']) ? 3 : $opts['socket_timeout'];
-
$this->charset = empty($opts['charset']) ? 'UTF-8' : $opts['charset'];
-
$this->rc = array();
-
$this->cc = array();
-
$this->bcc = array();
-
$this->append = array();
-
}
-
-
-
/**
-
* 创建一个邮件信封
-
* @param array $rc 收件人地址列表
-
* @param array $cc 抄送地址列表
-
* @param array $bcc 密送地址列表
-
* @return object
-
*/
-
public function envelope($rc,$cc=array(),$bcc=array()){
-
if(!is_array($rc) || empty($rc)){
-
trigger_error('收信人地址需要一个必须的数组参数,至少有一个正确的收信地址',E_USER_WARNING);
-
}else{
-
foreach($rc as $row){
-
if($this->is_email($row)===true){
-
array_push($this->rc,$row);
-
}
-
}
-
$this->rc = array_unique($this->rc);
-
}
-
-
if(!is_array($cc)){
-
trigger_error('抄送地址需要一个数组参数',E_USER_WARNING);
-
}else{
-
foreach($cc as $row){
-
if($this->is_email($row)===true){
-
array_push($this->cc,$row);
-
}
-
}
-
$this->cc = array_unique($this->cc);
-
}
-
-
if(!is_array($bcc)){
-
trigger_error('密送地址需要一个数组参数',E_USER_WARNING);
-
}else{
-
foreach ($bcc as $row){
-
if($this->is_email($row)===true){
-
| |