PHPメール送信クラス

WBOY
リリース: 2016-08-08 09:33:35
オリジナル
1205 人が閲覧しました

PHPメール送信クラス

PHP のメール送信クラスは、HTML 形式でメールを送信できるだけでなく、添付ファイルも送信できます
クラスメール {
//---グローバル変数を設定する
var $mailTo = "" // 受信者
; var $mailCC = "" // CC
; var $mailBCC = "" // 秘密の CC
; var $mailFrom = "" // 送信者
; var $mailSubject = "" // 件名
; var $mailText = "" // テキスト形式のレター本文
; 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, ","); true を返します。 /**************************************************
関数 setCC($inAddress) カーボンコピー担当者のメールアドレスを設定します
パラメーター $inAddress は、1 つ以上の電子メール アドレス、電子メール アドレス変数、
を含む文字列です。 複数の電子メール アドレスを区切るにはカンマを使用します。デフォルトの戻り値は true です。 ************************************************* * ************/
関数 setCC($inAddress){
//--explode() 関数を使用して、「,」に基づいてメール アドレスを分割します
$addressArray =explode( ",",$inAddress); //-- ループを通じて電子メール アドレスの有効性を確認します
for($i=0;$icheckEmail($addressArray[$i])==false) return false; //--すべての正当な電子メール アドレスは配列に保存されます
$this->mailCC = implode($addressArray, ","); true を返します。 /****************************************************
関数 setBCC($inAddress) は、秘密のカーボン コピー アドレスを設定します。パラメーター $inAddress には 1 つ以上の
が含まれます。 電子メール アドレスの文字列、電子メール アドレス変数。複数の電子メール アドレスを区切るにはカンマを使用します。デフォルトの戻り値は
です。 本当です
*****************************************/
関数 setBCC($inAddress){
//--explode() 関数を使用して、「,」に基づいてメール アドレスを分割します
$addressArray =explode( ",",$inAddress); //-- ループを通じて電子メール アドレスの有効性を確認します
for($i=0;$i { if($this->checkEmail($addressArray[$i])==false)
false を返します。 }
//--すべての正当な電子メール アドレスは配列に保存されます
$this->mailBCC = implode($addressArray, ","); true を返します。 }
/*************************************************** * *************
関数 setFrom($inAddress): 送信者のアドレスを設定します。パラメーター $inAddress は、含まれるメールです
アドレス文字列のデフォルトの戻り値は true です
***************************************/
関数 setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom = $inAddress
true を返します。 false を返します。 /***********************
関数 setSubject($inSubject) は、メールの件名パラメーター $inSubject を文字列
に設定するために使用されます。 返されるデフォルト値は true です
******************************************/
関数 setSubject($inSubject){
if(strlen(trim($inSubject)) > 0){
$this->mailSubject = ereg_replace( "n", "",$inSubject); true を返します。 false を返します。 /************************************************ * **
関数 setText($inText) テキスト形式のメール本文パラメータを設定します $inText はデフォルトのテキストコンテンツです
返還は真です
****************************************/
関数 setText($inText){
if(strlen(trim($inText)) > 0){
$this->mailText = $inText;  
true を返します。  }
false を返します。   
}
/************************************
関数 setHTML($inHTML) HTML 形式のメール本文パラメータ $inHTML を HTML 形式に設定します
デフォルトの戻り値は true です
*************************************/
関数 setHTML($inHTML){
if(strlen(trim($inHTML)) > 0){
$this->mailHTML = $inHTML;   
true を返します。  }
false を返します。  }
/*************************
関数 setAttachments($inAttachments) は電子メールの添付ファイルを設定します パラメーター $inAttachments
これはディレクトリを含む文字列であり、カンマで区切られた複数のファイルを含むこともできます。デフォルトの戻り値は true です。 ******************************************/
関数 setAttachments($inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;   
true を返します。  }
false を返します。  }
/********************************
関数 checkEmail($inAddress): この関数は、主に以前にすでに呼び出しています
メールアドレスの正当性を確認するために使用されます
****************************************/
関数 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){
/* 比如邮件内に以下の内容があります: 親愛なる ~!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)== "テキスト" )
return($this->setText($templateLineOut));   
else if( strtoupper($inFormat)== "HTML" )
return($this->setHTML($templateLineOut));  
} falseを返します。
  }
/*****************************************
関数 getRandomBoundary($offset) はランダムな境界値を返します
パラメーター $offset は整数です – マルチパイプライン呼び出しに使用され、md5() でエンコードされた文字列を返します
***************************************/
関数 getRandomBoundary($offset = 0){
//--随机数生成
srand(time()+$offset);   
//-- md5 暗号の 32 桁文字列を返します
return ( "----".(md5(rand()))); /*******************************************
関数: getContentType($inFileName) は添付ファイルの種類を決定するために使用されます
*********************************************/
関数 getContentType($inFileName){
//-- パスを削除
$inFileName = ベース名($inFileName); //--拡張子のないファイルを削除します
if(strrchr($inFileName, ".") == false){
"アプリケーション/オクテットストリーム" を返します
}
//--ゾーン拡張を提案し、判断します
$extension = strrchr($inFileName, "."); スイッチ($拡張子){
".gif" の場合: "画像/gif" を返します。 case ".gz": "application/x-gzip" を返します
; case ".htm": "text/html" を返します。 case ".html": "text/html" を返します。 ".jpg" の場合: "画像/jpeg" を返します。 case ".tar": "application/x-tar" を返します
; case ".txt": "text/plain" を返します
; case ".zip": "アプリケーション/zip" を返します
; デフォルト: "アプリケーション/オクテットストリーム" を返します。 }
"アプリケーション/オクテットストリーム" を返します
}
/***********************************************
関数 formatTextHeader はテキストコンテンツをテキストファイルヘッダーに追加します
************************************************* * ***/
関数 formatTextHeader(){ $outTextHeader = ""; $outTextHeader .= "コンテンツタイプ: text/plain;
charset=us-asciin";
$outTextHeader .= "コンテンツ転送エンコーディング: 7bitnn"; $outTextHeader .= $this->メールテキスト
; $outTextHeader を返します。 } /************************************************
関数 formatHTMLHeader() は、HTML ファイルのヘッダーをメール本文に追加します
*****************************************/
関数 formatHTMLHeader(){
$outHTMLHeader = ""; $outHTMLHeader .= "コンテンツタイプ: text/html;
charset=us-asciin";
$outHTMLHeader .= "コンテンツ転送エンコーディング: 7bitnn"; $outHTMLHeader .= $this->メールHTML.
; $outHTMLHeader を返します。 }
/************************************
関数 formatAttachmentHeader($inFileLocation) は電子メールの添付ファイルを識別します
*******************************/
関数 formatAttachmentHeader($inFileLocation){
$outAttachmentHeader = ""; //--上記の関数 getContentType($inFileLocation) を使用して添付ファイルの種類を取得します
$contentType = $this->getContentType($inFileLocation); //--添付ファイルがテキストの場合は、標準の 7 桁のエンコードを使用します
if(ereg( "テキスト",$contentType)){
$outAttachmentHeader .= "コンテンツタイプ: ";n"; $outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "n"; $outAttachmentHeader .= "コンテンツ転送エンコーディング: 7bitn"; $outAttachmentHeader .= "コンテンツの配置: 添付ファイル;n"; $outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'. "nn"; $textFile = fopen($inFileLocation, "r"); while(!feof($textFile)){
$outAttachmentHeader .= fgets($textFile,1000); }
//-- ファイルを閉じる fclose($textFile)
; $outAttachmentHeader .= "n"; }
//--非テキスト形式は 64 ビットでエンコードされます
else{ $outAttachmentHeader .= "コンテンツタイプ: ";n"; $outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "n"; $outAttachmentHeader .= "コンテンツ転送エンコーディング:base64n"; $outAttachmentHeader .= "コンテンツの配置: 添付ファイル;n"; $outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'. "nn"; //-- 外部コマンド uuencode を呼び出してエンコードします
exec( "uuencode -m $inFileLocation nothing_out",$returnArray); for ($i = 1; $i $outAttachmentHeader .= $returnArray[$i]
; }
$outAttachmentHeader を返します。 }
/*******************************
send() 関数はメールの送信に使用され、正常に送信された場合の戻り値は true です
***********************************/
関数 send(){
//--メールヘッダーを空に設定します
$mailHeader = ""; //--CC を追加
if($this->mailCC != "")
$mailHeader .= "CC: ".$this->mailCC
; //--秘密のカーボンコピー担当者を追加
if($this->mailBCC != "")
$mailHeader .= "BCC: ".$this->mailBCC
; //--送信者を追加
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 .= ' 境界="'.$bodyBoundary. '"'; $mailHeader .= "nnn"; //--メール本文と境界線を追加します
$mailHeader .= "--".$bodyBoundary
; $mailHeader .= $textHeader
$mailHeader .= "--".$bodyBoundary
; //--HTML タグを追加します
$mailHeader .= $htmlHeader; $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;n"; $mailHeader .= 'boundary="'.$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--".$attachmentBoundary を分割します
; //--添付ファイル情報
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]); }
$mailHeader .= "--".$attachmentBoundary
; return mail($this->mailTo,$this->mailSubject, "",$mailHeader); }
false を返します。 }
}
?>


使用方法:

$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”);//送信者
$mail->setSubject("件名") //件名
; $mail->setText("テキスト形式") ;//送信テキスト形式は変数にすることもできます
$mail->setHTML("html format") ;//送信する HTML 形式を変数にすることもできます
$mail->setAttachments("c:a.jpg") ;//添付ファイルを追加するには、パスを指定する必要があります
$mail->send(); //メールを送信する

以上、PHPのメール送信クラスを内容も含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート