ホームページ >php教程 >php手册 >PHP クラス 電子メールを送信するためのフル機能のクラス

PHP クラス 電子メールを送信するためのフル機能のクラス

WBOY
WBOYオリジナル
2016-06-13 12:41:30759ブラウズ

コードをコピー コードは次のとおりです:


class Email {
//--- グローバル変数を設定します
var $mailTo = "" // 受信者
var $mailCC = " "; // Cc
var $mailBCC = ""; // 秘密 Cc
var $mailFrom = ""; // 送信者
var $mailSubject = ""; // 件名
var $mailText = ""; // テキスト形式のレター本文
var $mailHTML = "" // HTML 形式のレター本文
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; $ icheckEmail($addressArray[$i])==false) return false }
//--すべての正当な電子メール アドレスが保存されます。配列
$this->mailCC = implode($addressArray, ",");
return true; }
/***************************************************
関数 setBCC($inAddress) は、シークレット カーボン コピー アドレス パラメーター $inAddress を、1 つ以上の
電子メール アドレスを含む文字列 (電子メール アドレス変数) に設定します。複数の電子メール アドレスを区切るにはカンマを使用します。デフォルトの戻り値は
本当の
*******************************************/
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;
return true;
} return false; }
/************************
関数 setSubject($inSubject) は、電子メールの件名パラメーター $inSubject を文字列に設定するために使用されます。
デフォルトの戻り値は true
*******************************************/
function setSubject($inSubject){
if(トリム($inSubject)) > 0){
$this->mailSubject = ereg_replace( "n", "",$inSubject);
return false; >/*************************************************** *
関数 setText($inText) は、メール本文パラメータをテキスト形式で設定します。$inText は、デフォルトの戻り値です。
************* ********** **********************/
function setText($inText){
if(strlen(trim($inText)) > 0){
$this->mailText = $inText;
true を返す; }
false を返す;
/****************************************
関数 setHTML($inHTML) は電子メール本文パラメータを設定しますHTML 形式の $inHTML HTML 形式です。
デフォルトの戻り値は true
*************************** **************/
function setHTML($inHTML){
if(strlen($inHTML) ) > 0){
$this->mailHTML = $inHTML;
return false; }
/************************
関数 setAttachments($inAttachments) は電子メールの添付ファイル パラメータを設定します $inAttachments
はディレクトリを含む文字列です。複数のファイルを含めることもできます。デフォルトの戻り値は true
****************************** です。 ****** ********/
関数$inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;
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)は、一時ファイルを読み取り、不要な情報を置き換えます。
$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//--Find開始位置
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)); if( strtoupper($inFormat)== "HTML" )
return($this->setHTML($templateLineOut))
} return
}
/******************************************
関数 getRandomBoundary($offset) は戻りますランダムな境界値
パラメータ $offset は整数です – 複数のパイプラインの呼び出しは md5() でエンコードされた文字列を返します
******************** **** ********************* */
function getRandomBoundary($offset = 0){
//--乱数生成
srand(time() $offset);
//--md5 でエンコードされた 32 ビット文字を返すlength String
return ( "----".(md5(rand()))); }
/**********************************************
関数: getContentType($ inFileName) は、添付ファイルの種類を決定するために使用されます
************************************* ***** *****/
function getContentType($inFileName){
/ /--パスを削除します
$inFileName =basename($inFileName);
//--拡張子なしでファイルを削除します
if(strrchr($inFileName, ".") == false){
return "application/octet-stream";
}
//--拡張子名を指定して判断します
$extension = strrchr($inFileName, ".");拡張子){
case ".gif": return "image/gif";
case ".gz": return "application/x-gzip";
case ".htm": return "text / html";
case ".html": return "text/html";
case ".jpg": return "image/jpeg";
case ".tar": return "application/x - tar";
case ".txt": return "text/plain";
case ".zip": return "application/zip";
デフォルト: return "application/octet-stream";
}
return "application/octet-stream";
}
/**************************************************
関数 formatTextHeader は、テキストコンテンツとテキストファイルヘッダーを配置します
************************************ ****** **************/
function formatTextHeader(){ $outTextHeader = ""
$outTextHeader 。 = "コンテンツ タイプ: text/plain;
charset=us-asciin";
$outTextHeader .= "コンテンツ転送エンコーディング: 7bitnn"; . "n";
return $outTextHeader; /**************************************************
関数 formatHTMLHeader() は、HTML ファイルのヘッダーをメール本文のコンテンツに追加します
******************************** ** ********/
function formatHTMLHeader = ""
$outHTMLHeader; -タイプ: text/html;
charset=us-asciin";
$outHTMLHeader .= "Content-Transfer-Encoding: 7bitnn";
$outHTMLHeader .= $this->mailHTML. " n ";
return $outHTMLHeader;
}
/****************************************
関数 formatAttachmentHeader($inFileLocation) は、次の添付ファイルを識別します。メール
************************************/
function formatAttachmentHeader($inFileLocation){
$outAttachmentHeader = "";
//- -上記の関数 getContentType($inFileLocation) を使用して添付ファイルの種類を取得します。
$contentType = $this->getContentType($inFileLocation)
//--添付ファイルがテキスト タイプの場合は、標準の 7 ビットを使用します。エンコーディング
if(ereg( "text",$contentType)){
$outAttachmentHeader .= "Content-Type: ".$contentType. ";n";
$outAttachmentHeader .= ' name=" ' .basename($inFileLocation). '"'. "n";
$outAttachmentHeader .= "Content-Transfer-Encoding: 7bitn";
$outAttachmentHeader .= "Content-Disposition:attachment;n";
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'. "nn";
$textFile = fopen($inFileLocation, "r"); ( $textFile)){
$outAttachmentHeader .= fgets($textFile,1000);
//--ファイルを閉じます fclose($textFile);
$outAttachmentHeader .= "n";
}
//--非テキスト形式は 64 ビットでエンコードされます
else { $outAttachmentHeader .= "Content-Type: ".$contentType. ";n";
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'; > $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];
}
}
/**********************************
関数 send() はメールの送信に使用され、戻り値は true です正常に送信された場合
* *************************************/
function send(){
//--メールヘッダーを空に設定します
$mailHeader = ""
//-- カーボンを追加します受信者をコピー
if($this->mailCC != "")
$mailHeader .= "CC: ".$this->mailCC.
//--シークレットを追加カーボンコピーの人
if($this->mailBCC != "")
$mailHeader .= "BCC: ".$this->mailBCC.
//--Add送信者
if($this->mailFrom != "")
$mailHeader .= "FROM: ".$this->mailFrom.
; - ----------メール形式--------------- ---
//--テキスト形式
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();
$htmlHeader = $this->formatHTMLHeader();
//--MIME バージョンを設定します
$mailHeader "MIME バージョン: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n"
$mailHeader .= 'boundary="'.$bodyBoundary. '"'; >$mailHeader .= "nnn";
//--メール本文と境界を追加します
$mailHeader .= "-".$bodyBoundary.
$mailHeader .= $textHeader;
$mailHeader .= "--".$bodyBoundary. "n";
//--HTML タグを追加します
$mailHeader .= $htmlHeader; ".$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;n";
$mailHeader .= 'boundary="'.$ attachmentBoundary.'"'."nn";
$mailHeader .= "これは MIME 形式のマルチパート メッセージです。n";
$mailHeader .= "--".$attachmentBoundary. "n" ;
$bodyBoundary = $this->getRandomBoundary(1);
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader(); $mailHeader .= "MIME バージョン: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n";
$mailHeader .= 'boundary="'.$bodyBoundary. '" ';
$mailHeader .= "nnn";
$mailHeader .= "-".$bodyBoundary.= " --".$bodyBoundary. "n";
$mailHeader .= $htmlHeader;
$mailHeader .= "n--".$bodyBoundary. "--";
//--Get添付ファイルの値
$attachmentArray =explode( ",",$this->mailAttachments);
//--添付ファイルの数に応じてループします
for($i=0;$i//--$mailHeader を分割します。= "n--".$attachmentBoundary."n";
//--添付ファイル情報
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .= "--".$attachmentBoundary.
return mail($this-> mailTo,$this->mailSubject, "",$mailHeader);
}
return false;
}
}
?>



使用法:



コードをコピーします


コードは次のとおりです:

<「email.class」を含めます。 ” $mail->setTo("a@a.com") //受信者$mail->setCC("b@b.com,c@c.com"); ; //CC

$mail->setCC("d@b.com,e@c.com")//シークレットCC

$mail->setFrom("f@f.com") );//Sender
$mail->setSubject("Subject"); //Subject
$mail->setText("Text Format");//テキスト形式で送信することも可能ですvariable
$mail->setHTML("html format");//送信する HTML 形式を変数にすることもできます
$mail->setAttachments("c:a.jpg");//添付ファイルを追加します、パスを指定する必要があります
$mail->send() //メールを送信します
?>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。