ホームページ >php教程 >php手册 >詳細な手順を記載した電子メールを送信するためのフル機能の PHP コード

詳細な手順を記載した電子メールを送信するためのフル機能の PHP コード

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

class Email {
//--- グローバル変数を設定します
var $mailTo = ""; // 受信者
var $mailCC = ""; // CC
var $mailBCC = ""; // 秘密の CC
var $mailFrom = ""; // 送信者
var $mailText = ""; format レター本文
var $mailHTML = ""; // HTML 形式のレター本文
var $mailAttachments = ""; // 添付ファイル
/* 関数 setTo($inAddress ): メールの処理に使用されるアドレスパラメータ $inAddress
1 つ以上の文字列、電子メール アドレス変数が含まれます。複数の電子メール アドレスを区切るにはカンマを使用します
デフォルトの戻り値は true です
**** *********** **************************************** ****/
関数 setTo ($inAddress){
//--explode() 関数を使用して、「,」に基づいてメール アドレスを分割します。
$addressArray =explode( ",",$inAddress ); - ループ
for($i=0;$icheckEmail ($addressArray[$i])=] を通じてメール アドレスの有効性をチェックします。 =false) return false; }
//--すべての有効な電子メール アドレスは配列
$this->mailTo = implode($addressArray, "," ; Split
$addressArray =explode) に保存されます( ",",$inAddress);
//- ループ
for($i=0;$icheckEmail($addressArray[$i])==false) return false; }
//--すべての正当な電子メール アドレスは配列
$this->mailCC = implode($ addressArray, ",");
return true; }
/************************************************
関数setCC($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, ",");
return true;
/*************************************************
関数 setBCC($inAddress) は、シークレット カーボン コピー アドレスを設定します。パラメータ $inAddress は、1 つ以上の
メール アドレスを含む文字列です。複数のメール アドレスを区切るには、カンマを使用します。デフォルトの戻り値は 本当の
******************************************** **/
function setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom = $inAddress;
return true; 🎜>} return false; }
/*************************************************** * *************
関数 setFrom($inAddress): 電子メールを含むように送信者アドレス パラメーター $inAddress を設定します
アドレス文字列のデフォルトの戻り値は true です
* *************************************/
function setSubject($inSubject){
if(strlen(trim($inSubject)) > 0){
$ this->mailSubject = ereg_replace( "n", "",$inSubject);
return true; }
/************************
関数 setSubject($inSubject) は、電子メールの件名パラメーター $inSubject を文字列に設定するために使用されます。
デフォルトの戻り値は true
*******************************************/
function setText( $inText){
if(strlen(trim($inText)) > 0){
$this->mailText = $inText;
return false; >}
/*************************************
関数 setHTML($inHTML) はメール本文パラメータ $inHTML を設定しますHTML 形式 HTML 形式です。
デフォルトの戻り値は true
***************************** **************/
function setHTML($inHTML){
if(strlen(trim($inHTML)) > 0){
$this->mailHTML = $ inHTML;
return true; }
return false; }
/**************************
関数 setAttachments($inAttachments) パラメータ $inAttachments
は、次の内容を含む文字列です。ディレクトリ (含めることもできます) 複数のファイルはカンマで区切られます。デフォルトの戻り値は true
************************** です。 ************** ********/
function setAttachments($inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;
return false; }
/********************************
関数 checkEmail($inAddress): この関数は以前にすでに呼び出しています。主に
メールアドレスの正当性をチェックするために使用されます
************************************ ** ***/
関数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~,
Your address is ~!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));
} return false; >function getRandomBoundary( $offset = 0){
//--乱数生成
srand(time() $offset);
//--md5 でエンコードされた 32 ビット文字長の文字列を返します
return ( "----".(md5(rand()))); }
/*******************************************
関数 getRandomBoundary($offset) は、ランダム境界値
パラメータ $offset は整数です – マルチパイプライン呼び出しに使用され、md5() でエンコードされた文字列を返します
******************* ***********************/
function getContentType($inFileName){
//--削除path
$inFileName =basename($inFileName);
//--拡張子のないファイルを削除します
if(strrchr($inFileName, ".") == false){
return "application/オクテットストリーム";

//--提区扩展名并进行判断
$extension = strrchr($inFileName, "."); 
switch($extension){
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"; 
デフォルト: "application/octet-stream" を返します。 
}
return "application/octet-stream"; 
}
/**************************************************
関数 formatTextHeader テキスト コンテンツとテキスト ファイル ヘッダー
************************************** **** **************/
function formatTextHeader(){ $outTextHeader = ""; 
$outTextHeader .= "Content-Type: text/plain;
charset=us-asciin"; 
$outTextHeader .= "Content-Transfer-Encoding: 7bitnn"; 
$outTextHeader .= $this->mailText。 「ん」; 
$outTextHeader を返す; 
} /************************************************
関数formatHTMLHeader() は、メール本文の内容に HTML ファイルのヘッダーを追加します
********************************** ********/
function formatHTMLHeader(){
$outHTMLHeader = ""; 
$outHTMLHeader .= "Content-Type: text/html;
charset=us-asciin"; 
$outHTMLHeader .= "Content-Transfer-Encoding: 7bitnn"; 
$outHTMLHeader .= $this->mailHTML。 「ん」; 
$outHTMLHeader を返す; 
}
/****************************************
関数 formatAttachmentHeader($inFileLocation) は、次の添付ファイルを識別します。メール
*************************************/
function formatAttachmentHeader($inFileLocation){
$outAttachmentHeader = ""; 
//-- 上の関数 getContentType($inFileLocation) を取得して付属品の種類
$contentType = $this->getContentType($inFileLocation); 
//--如果付属品は文本型则用标標準的7位编码
if(ereg( "text",$contentType)){
$outAttachmentHeader .= "Content-Type: ".$コンテンツタイプ。 ";n"; 
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'。 「ん」; 
$outAttachmentHeader .= "Content-Transfer-Encoding: 7bitn"; 
$outAttachmentHeader .= "Content-Disposition: attachment;n"; 
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'。 「ん」; 
$textFile = fopen($inFileLocation, "r"); 
while(!feof($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). '"'。 「ん」; 
//--调用外部コマンドuuencode进行编码
exec("uuencode -m $inFileLocation nothing_out",$returnArray); 
for ($i = 1; $i$outAttachmentHeader .= $returnArray[$i]。 「ん」; 
}
} $outAttachmentHeader を返します。 
}
/*******************************
関数 send() はメールの送信に使用され、送信に成功すると戻り値は true になります。
* ************************************/
function send(){
//--メールヘッダーを空に設定します
$mailHeader = ""
//--CC を追加しますPeople
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();
//-MIME バージョンを設定します
$mailHeader .= "MIME バージョン: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n"
$mailHeader .= ' border="'.$bodyBoundary. '"';
$mailHeader .= "nnn";
//--メール本文と境界を追加します
$mailHeader .= "-".$bodyBoundary.
$mailHeader .= $ textHeader;
$mailHeader .= "-".$bodyBoundary. "n";
//--HTML タグを追加します。
$htmlHeader .= "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;n";
$mailHeader .= 'boundary="' .$attachmentBoundary. '"'. "nn";
$mailHeader .= "これは MIME 形式のマルチパート メッセージです。n";
$mailHeader .= "--".$attachmentBoundary. " n";
$bodyBoundary = $this->getRandomBoundary(1);
$textHeader = $this->gt;formatTextHeader();
$htmlHeader = $this->formatHTMLHeader();
$mailHeader .= "MIME バージョン: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n";
$mailHeader .= 'boundary='.$bodyBoundary。 '"';
$mailHeader .= "nnn";
$mailHeader .= "--".$bodyBoundary. "n";
$mailHeader .= $textHeader;
$mailHeader . = "--".$bodyBoundary. "n";
$htmlHeader;
$bodyBoundary.= "--"; -添付ファイルの値を取得します
$attachmentArray =explode( ",",$this->mailAttachments)
//--添付ファイルの数に基づいてループします
for($i=0;$) i< ;count($attachmentArray);$i ){
//--$mailHeader .= "n--".$attachmentBoundary."n";
//--添付ファイル情報
$ mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .= "--".$attachmentBoundary.
return mail($this) - >mailTo,$this->mailSubject, "",$mailHeader);
}
}
?使用法:
>


コードをコピー

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


<
「email.class」を含める

$mail->setTo("a@a.com") //受信者
$mail -> ; setCC("b@b.com,c@c.com") //CC
$mail-> setCC("d@b.com,e@c.com");
$mail->setFrom(“f@f.com”);//送信者
$mail->setSubject(“件名”); //件名
$ mail->setText( "text format");//送信テキスト形式は変数にすることもできます
$mail->setHTML("html format");//送信 HTML 形式は変数にすることもできます
$ mail-> setAttachments("c:a.jpg"); //添付ファイルを追加します。パスを指定する必要があります
$mail->send() //メールを送信します
?>

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