ホームページ  >  記事  >  バックエンド開発  >  フル機能の PHP メール送信クラス、フル機能のメール送信_PHP チュートリアル

フル機能の PHP メール送信クラス、フル機能のメール送信_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:59:48908ブラウズ

PHP は、フル機能でメールを送信できるフル機能のメール クラスです

次のクラスは、html 形式でメールを送信できるだけでなく、添付ファイル
class Email {
//--- グローバル変数を設定します
var $mailCC = ""; // Cc
var $mailBCC = ""; mailFrom = ""; // 送信者
var $mailSubject = ""; // テキスト形式のレター本文
var $mailHTML = "";レター本文
var $mailAttachments = ""; // 添付ファイル
/* 関数 setTo($inAddress): メールの処理に使用されるアドレス パラメーター $inAddress には、カンマで区切られた 1 つ以上の文字列とメール アドレス変数が含まれます 複数のメール アドレス
デフォルトの戻り値は true です
****************************************** * ******************/
function setTo($inAddress){
//--explode() 関数を使用して、「,」に基づいてメール アドレスを分割します
$ addressArray =explode( ",",$inAddress);
//--ループを通じてメールアドレスの有効性を確認します
for($i=0;$icheckEmail($addressArray[$i])==false) return false; }
//--すべての有効な電子メール アドレスは配列
$this->mailTo = implode($addressArray, ", ");
return true; }
/**************************************************
機能setCC($inAddress) は、カーボン コピー者の電子メール アドレスを設定します
パラメーター $inAddress は、1 つ以上の電子メール アドレス、電子メール アドレス変数を含む文字列です。
複数の電子メール アドレスを区切るにはカンマを使用します。デフォルトの戻り値は true です
**** ********************************************* ***** ********/
function setCC($inAddress){
//--explode() 関数を使用して、「,」に基づいてメール アドレスを分割します
$addressArray = explode( ",",$inAddress);
//--ループを通じてメールアドレスの有効性をチェックします
for($i=0;$i//--すべての正当な電子メール アドレスは配列
$this->mailCC = implode($addressArray, ",") ;
return true; }
/****************************************************
関数 setBCC($inAddress) は、シークレット カーボン コピー アドレス パラメーター $inAddress を 1 つ以上の
電子メール アドレスを含む文字列に設定します。電子メール アドレス変数。複数の電子メール アドレスを区切るにはカンマを使用します。デフォルトの戻り値は
true
**** *************************************/
function setBCC($inAddress){
//--explode() 関数を使用して、「,」に基づいてメール アドレスを分割します
$addressArray =explode( "," ,$inAddress);
//-- ループを通じてメール アドレスの有効性を確認します
for($i=0;$i{ if($this-> ;checkEmail ($addressArray[$i])==false)
return false;
//--すべての正当な電子メール アドレスは配列
$this->mailBCC = implode($addressArray, "," );
true を返す
}
/*************************************************** * *************
関数 setFrom($inAddress): 送信者アドレス パラメーター $inAddress を電子メール
アドレスを含む文字列として設定します。デフォルトの戻り値は true です
*****。 ******* *******************************/
function setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom = $inAddress ;
true を返す;
} false を返す }
/***************************
関数 setSubject($inSubject) は、電子メールの件名パラメーター $inSubject を文字列に設定するために使用されます。
デフォルトの戻り値値は true です
**** ****************************************/
function setSubject($inSubject){
if(strlen(trim($inSubject)) > 0){
$this-> mailSubject = ereg_replace( "n", "",$inSubject);
return true; }
/*************************************************** *
関数 setText($inText) は、メール本文パラメータ $inText をテキスト形式で設定します。デフォルトの戻り値は、
************ です。 *********** *****************/
function setText($inText){
if(trim($ inText) ) > 0){
$this->mailText = $inText; }
return false;
/***************************************
関数 setHTML($inHTML) はメール本文パラメータ $inHTML を設定しますHTML 形式から HTML 形式へ、
デフォルトの戻り値は true です
*********************************** ********/
関数 setHTML($inHTML) strlen(trim($inHTML)) > 0){
$this->mailHTML = $inHTML;true を返す; }
false を返す; }
/**************************
関数 setAttachments($inAttachments) は、メールの添付ファイル パラメーターを設定します
は、ディレクトリを含む文字列です。カンマ区切りのデフォルトの戻り値は true です
******************************** *************** **/
function setAttachments($inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;
return true; }
return false;
/**********************************
関数 checkEmail($inAddress): この関数は以前にすでに呼び出しており、主に
使用されていますメールアドレスの正当性を確認するため
*****************************************/
function checkEmail($inAddress){
return (ereg( "^[^@]+@([a-zA-Z0 -9-]+.)+([a-zA-Z0-9-]{2}|net|com|gov|mil|org|edu|int)$",$inAddress));
}
/* ***************************************************
関数loadTemplate ($inFileLocation,$inHash,$inFormat) 一時ファイルを読み込み、
無駄な情報を置き換える パラメータ $inFileLocation はファイルのディレクトリを見つけるために使用される
$inHash 一時的な値が格納されるため $inFormat メール本文が配置されるため
************************************************ ******** ***/
functionloadTemplate($inFileLocation,$inHash,$inFormat){
/* たとえば、メールには次の内容が含まれています: Dear ~!UserName~ 様、
あなたのアドレスは ~!UserAddress~ */
//- -「~!」は開始マーク、「~」は終了マークです
$templateDelim = "~"
$templateNameStart = "!"; これらの場所を検索して置き換えます
$templateLineOut = ""; //--一時ファイルを開く
if($templateFile = fopen($inFileLocation, "r")){
while(!feof($templateFile)){
$templateLine = fgets($templateFile,1000 );
$templateLineArray =explode($templateDelim,$templateLine);
for( $i=0; $i//--開始位置を検索します
if(strcspn( $templateLineArray [$i],$templateNameStart)==0){
//-- 対応する値を置き換えます
$hashName = substr($templateLineArray[$i],1);
//-- 対応する値を置き換えます
$templateLineArray [$i] = ereg_replace($hashName,(string)$inHash[$hashName],$hashName);
}
}
//--文字配列とオーバーレイを出力します
$templateLineOut .= implode($templateLineArray) , "" );
} //-- ファイルを閉じる fclose($templateFile);
//--本文の形式 (テキストまたは HTML) を設定する
if( strtoupper($inFormat)== "TEXT" )
return ($this->setText($templateLineOut));
else if( strtoupper($inFormat)== "HTML" )
return($this->setHTML($templateLineOut));
/******************************************
関数 getRandomBoundary($offset) はランダムを返します境界値
パラメータ $offset は整数です – md5() でエンコードされた文字列を返すマルチパイプライン呼び出しに使用されます
************************* **** *****************/
function getRandomBoundary($offset = 0){
//--乱数生成
srand(time()+$offset);
//--md5 でエンコードされた 32 ビット文字を返すstring
return ( "----".(md5(rand())))); }
/*********************************************
関数: getContentType($inFileName)添付ファイルの種類を決定するために使用されます
****************************************** *********/
function getContentType($inFileName){
//--パス
$inFileName を削除=basename( $inFileName);
//--拡張子のないファイルを削除します
if(strrchr($inFileName, ".") == false){
return "application/octet-stream"
//--プロンプト領域の拡張子と判定
$extension = strrchr($inFileName, ".");
switch($extension){
case ".gif": return "image/gif": return " application /x-gzip";
case ".htm": return "text/html";
case ".html": return "text/html";
case ".jpg": return "image/jpeg";
case ".tar": "アプリケーション/x-tar" を返します。
case ".txt": "text/plain" を返します。
default: "アプリケーション/オクテット" を返します。 -stream";
}
return "application/octet-stream";
}
/************************************************
関数 formatTextHeader は変換しますテキストの内容 テキストヘッダーを追加します
****************************************** ***** **********/
function formatTextHeader(){ $outTextHeader = "";
$outTextHeader .= "Content-Type: text /plain;
charset=us-asciin";
$outTextHeader .= "コンテンツ転送エンコーディング: 7bitnn";
$outTextHeader .= $this->mailText. "n";
return $outTextHeader; /*************************************************
関数形式HTMLHeader( )HTML ファイルのヘッダーをメール本文に追加します
*************************************** *** ****/
$outHTMLHeader = ""
$outHTMLHeader; -Type: text/html;
charset=us-asciin";
$outHTMLHeader .= "Content-Transfer-Encoding: 7bitnn";
$outHTMLHeader .= $this->mailHTML. "n";
return $outHTMLHeader ;
}
/***************************************
関数 formatAttachmentHeader($inFileLocation) は、電子メール内の添付ファイルを識別します
*** ******************************/
function formatAttachmentHeader($inFileLocation){
$outAttachmentHeader = "";
//-- 添付ファイルの種類を取得するには、上記の関数 getContentType($inFileLocation) を使用します。 $ this->getContentType($inFileLocation);
//-添付ファイルがテキストの場合、標準の 7 ビット エンコーディングを使用します
if( "text",$contentType){
$outAttachmentHeader .= "Content-Type : ".$contentType. ";n";
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "n";
$outAttachmentHeader .= "コンテンツ転送エンコーディング: 7bitn" ;
$outAttachmentHeader .= "Content-Disposition:attachment;n";
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'
$textFile = fopen($inFileLocation, "r");
while(!feof($textFile)){
$outAttachmentHeader .= fgets($textFile,1000);
//-- ファイルを閉じます fclose($textFile) .= " n";
}
//-非テキスト形式は 64 ビットでエンコードされます
else{ $outAttachmentHeader .= "Content-Type: ".$contentType.= ' name=" '.basename($inFileLocation). '"'. "n";
$outAttachmentHeader .= "Content-Transfer-Encoding:base64n";
$outAttachmentHeader .= "Content-Disposition:attachment;n";
$outAttachmentHeader . = ' filename="'.basename($inFileLocation). '"'. "nn"
//-- 外部コマンド uuencode を呼び出して
exec( "uuencode -m $inFileLocation nothing_out",$returnArray); for ($i = 1; $i<(count($returnArray)); $i++){
$outAttachmentHeader .= $returnArray[$i]; "n";
}
} return $outAttachmentHeader; * ******************************
関数 send() はメールの送信に使用され、送信に成功すると戻り値は true になります
***** *****************************/
function send(){
//--メールヘッダーを空に設定します
$mailHeader = "";
//--カーボンコピーのユーザーを追加します
if($this->mailCC ! = " ")
$mailHeader .= "CC: ".$this->mailCC. "n"
//--秘密のカーボンコピー人物を追加
if($this->mailBCC != "")
$mailHeader .= "BCC: ".$this->mailBCC. "n";
//--送信者を追加
if($this->mailFrom != "")
$mailHeader .= "FROM: " .$this->mailFrom. "n"
//---------------メール形式------ ------------------------
//--テキスト形式
if($this->mailText != "" && $this- > mailHTML == "" && $this->mailAttachments == ""){
return mail($this->mailTo,$this->mailSubject,$this->mailText,$mailHeader); }
//--html またはテキスト形式
else if($this->mailText != "" && $this->mailHTML != "" && $this->mailAttachments == ""){
$ bodyBoundary = $this->getRandomBoundary();
$textHeader = $this->formatTextHeader();
//--MIME バージョンを設定します
$mailHeader 。 = " MIME バージョン: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n"
$mailHeader .= 'boundary="'.$bodyBoundary. '"'; "nnn ";
//--メール本文と境界を追加します
$mailHeader .= $textHeader .= "--".$ bodyBoundary. "n";
//--HTML タグを追加します
$mailHeader .= "n--".$bodyBoundary
return mail( $this->mailTo,$this->mailSubject, "",$mailHeader);
}
//--テキストと HTML と添付ファイル
else if($this->mailText != "" && $this ->mailHTML != "" && $this->mailAttachments != ""){
$attachmentBoundary = $this->getRandomBoundary();
$mailHeader .= "Content-Type: multipart/mixed;ん」 ;
$mailHeader .= ' 境界="'.$attachmentBoundary. '"'。 「ん」; 
$mailHeader .= "これは MIME 形式のマルチパート メッセージです。n"; 
$mailHeader .= "--".$attachmentBoundary。 「ん」; 
$bodyBoundary = $this->getRandomBoundary(1); 
$textHeader = $this->formatTextHeader(); 
$htmlHeader = $this->formatHTMLHeader(); 
$mailHeader .= "MIME バージョン: 1.0n"; 
$mailHeader .= "Content-Type: multipart/alternative;n"; 
$mailHeader .= ' 境界="'.$bodyBoundary. '"'; 
$mailHeader .= "nnn"; 
$mailHeader .= "--".$bodyBoundary。 「ん」; 
$mailHeader .= $textHeader; 
$mailHeader .= "--".$bodyBoundary。 「ん」; 
$mailHeader .= $htmlHeader; 
$mailHeader .= "n--".$bodyBoundary。 「--」; 
//--获取添付ファイル值
$attachmentArray =explode( ",",$this->mailAttachments); 
//--添付ファイルの数に基づいて循環実行
for($i=0;$i//--分割 $mailHeader .= "n--".$添付ファイルの境界。 「ん」; 
//--添付ファイル情報
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]); 
}
$mailHeader .= "--".$attachmentBoundary。 「--」; 
メールを返す($this->mailTo,$this->mailSubject, "",$mailHeader); 
}
false を返します。 
}
}
?> 


使用方法
 
「email.class」を含める

$mail->setTo("a@a.com"); //收件人
$mail-> setCC("b@b.com,c@c.com"); //抄送
$mail-> setCC("d@b.com,e@c.com"); //秘密抄送
$mail->setFrom(“f@f.com”);//公開者
$mail->setSubject(“主题”) ; //主题
$mail->setText(“文本格式”) ;//送信文本格式でも可可变量
$mail->setHTML(“html格式”) ;//送信html格式でも可可变量
$mail->setAttachments(“c:a.jpg”) ;// 添付ファイルの追加, 路径の必要性を示す
$mail->send(); //送信アイテム

转ダウンロード自:http://www.aspnetjia.com

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1096896.html技術記事 PHP 機能齐全の送信邮件類、機能齐全送信邮件 この種の機能强大、不但能発行 html 格式の邮件、可送​​信付属品 ?php class Email { //---設定全体...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。