亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
分享一個直接發(fā)送郵件的代碼
[打印本頁]
作者:
eslizn
時間:
2013-10-09 09:39
標(biāo)題:
分享一個直接發(fā)送郵件的代碼
直接投遞到郵件服務(wù)器,不需要使用smtp,建議設(shè)置spf,支持附件發(fā)送
<?php
/**
* Email Class
*
* @author eslizn <eslizn@live.cn>
* @package Vendor\Util
* @version $Id
*/
class Email{
var $data;
var $error=array();
var $version='1.0';
var $mailer='Xmailer';
var $charset='UTF-8';
var $type='text/plain';
var $boundary='#25f9e794323b453885f5181f1b624d0b#';
var $subject;
var $message;
var $attach=array();
/**
* 設(shè)置郵件主要信息
* @param string $subject 郵件主題
* @param string $message 郵件正文
* @param string $from 郵件發(fā)送人
* @param mixed $data 郵件正文替換數(shù)據(jù)
*/
function __construct($subject,$message,$from,$data=null){
$this->subject=$subject;
$this->message=$message;
$this->from=$from;
$this->data=$data;
}
/**
* 添加附件
* @param string $name 附件名
* @param bytes $data 附件數(shù)據(jù)
* @param string $type 附件MIME類型
* @return object [description]
*/
function attach($name,$data,$type){
array_push($this->attach,array(
'type'=>$type,
'name'=>$name,
'data'=>$data
));
return $this;
}
/**
* 增加替換數(shù)據(jù)
* @param string $offset [description]
* @param string $value [description]
* @return object [description]
*/
function assign($offset,$value){
$this->data[$offset]=$value;
return $this;
}
/**
* 發(fā)送郵件
* @param string $to 收件人
* @return boolean
*/
function send($to){
$msg=array();
if($this->version){
array_push($msg, "MIME-Version: {$this->version}");
}
if($this->mailer){
array_push($msg, "X-Mailer: {$this->mailer}");
}
$rule="/([a-zA-Z0-9_\-\.]+)\@([a-zA-Z0-9_\-\.]+)/i";
if(!preg_match($rule,$to,$to) || !preg_match($rule,$this->from,$from)){
array_push($this->error,'email format error!');
return false;
}
if (!getmxrr($to[2],$mx)){
array_push($this->error,'get mx record error!');
return false;
}
array_push($msg, "From: {$from[1]} <{$from[0]}>");
array_push($msg, "To: {$to[1]} <{$to[0]}>");
array_push($msg, "Date: ".date("D, t F Y H:i:s O"));
array_push($msg, "Subject: =?{$this->charset}?B?".base64_encode($this->subject)."?=");
if($this->attach){
array_push($msg, "Content-Type: multipart/mixed; boundary=\"{$this->boundary}\"");
}else{
array_push($msg, "Content-Type: {$this->type}; charset={$this->charset}");
}
array_push($msg, "Content-Transfer-Encoding: base64");
if($this->data){
foreach ($this->data as $offset => $value) {
$this->message=str_replace('{.$offset.'}', $value, $this->message);
}
}
if($this->attach){
array_push($msg, "--{$this->boundary}");
array_push($msg, "Content-Type: {$this->type}; charset={$this->charset}");
array_push($msg, "Content-Transfer-Encoding: base64");
array_push($msg, "");
array_push($msg, base64_encode($this->message));
}else{
array_push($msg, "");
array_push($msg, base64_encode($this->message));
}
if($this->attach){
foreach ($this->attach as $attach) {
array_push($msg, "--{$this->boundary}");
array_push($msg, "Content-Type: {$attach['type']}; name=\"{$attach['name']}\"");
array_push($msg, "Content-Transfer-Encoding: base64");
array_push($msg, "");
array_push($msg, base64_encode($attach['data']));
}
}
$cmds=array(
"HELO {$from[2]}",
"MAIL FROM:<{$from[0]}>",
"RCPT TO:<{$to[0]}>",
"DATA",
implode("\r\n",$msg)."\r\n.\r\n",
"QUIT"
);
$fp=fsockopen(current($mx),25);
foreach($cmds as $val){
fwrite($fp,$val."\r\n");
$status=fgets($fp);
if(preg_match('/^(\d+) ([\w\W]+)$/', $status,$status)){
if(!in_array($status[1], array(220, 354, 214, 211, 250, 251))){
array_push($this->error, $status[2]);
return false;
}
}
}
fclose($fp);
return true;
}
/**
* 獲取錯誤信息
* @return [type] [description]
*/
function getError(){
return $this->error;
}
}
復(fù)制代碼
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2