ホームページ > php教程 > php手册 > 完全に機能する PHP 電子メール クラスを推奨する

完全に機能する PHP 電子メール クラスを推奨する

WBOY
リリース: 2016-06-13 12:34:22
オリジナル
816 人が閲覧しました

PHP -- 次のクラスの関数は非常に強力です。HTML 形式でメールを送信できるだけでなく、添付ファイルも送信できます。
使用法:

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

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


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

class Email {
//--- グローバル変数を設定します
var $mailTo = "" // 受信者
var $mailCC = "";
var $mailBCC = ""; // 秘密の Cc
var $mailFrom = ""; // 送信者
var $mailSubject = ""; // テキスト形式のレター本文
var $mailHTML = "" // HTML 形式のレター本文
var $mailAttachments = "" // 添付ファイル
/* 関数 setTo ($inAddress): 電子メールの処理に使用されるアドレス パラメータ $inAddress
1 つ以上の文字列、電子メール アドレス変数が含まれます。複数の電子メール アドレスを区切るにはカンマを使用します
デフォルトの戻り値は true です
* *** *********************************************** ** *****/
function setTo($inAddress){
//--explode() 関数を使用して、「,」に基づいて電子メール アドレスを分割します。
$addressArray =explode( "," ,$inAddress);
// --
for($i=0;$i//--すべての正当な電子メール アドレスは配列
$this->mailTo = implode($addressArray, " ,");
return true; }
/************************************************
関数setCC($inAddress) は、カーボン コピー者の電子メール アドレスを設定します。
パラメータ $inAddress は、1 つ以上の電子メール アドレスを含む文字列です。
複数の電子メール アドレスを区切るにはカンマを使用します。戻り値は true
******************************************* *****************/
function setCC($inAddress){
//--「,」に従ってexplode()関数を使用します。電子メール アドレスを分割します
$addressArray =explode( ",",$inAddress);
//-- ループを通じて電子メール アドレスの有効性を確認します
for($i=0;$i< count($addressArray);$i ){ if($this->checkEmail($addressArray[$i])==false) return false; }
//--すべての正当な電子メール アドレスが配列に保存されます
$this->mailCC = implode($addressArray, ",");
return true; }
/*************************************************
関数 setBCC($inAddress) は、シークレット カーボン コピー アドレスを設定します。パラメータ $inAddress は、1 つ以上の
メール アドレスを含む文字列です。メール アドレス変数は、複数のメール アドレスを区切るためにカンマを使用します。デフォルトの戻り値は
です。 true
**********************************************/
function setBCC($inAddress){
//--explode() 関数を使用して、「,」に基づいてメール アドレスを分割します。
$addressArray =explode( ",",$inAddress);ループを通じて Check
for($i=0;$i{ if($this->checkEmail($addressArray[$i])==false)
return false;
}
/*************************************************** * *************
関数 setFrom($inAddress): 電子メールを含むように送信者アドレス パラメーター $inAddress を設定します
アドレス文字列のデフォルトの戻り値は true です
* *************************************/
function setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this-> mailFrom = $inAddress;
戻り値
}   
/************************
関数 setSubject($inSubject) は、電子メールの件名パラメーター $inSubject を文字列に設定するために使用されます。
デフォルトの戻り値は true
*******************************************/
function setSubject($inSubject){
if(strlen(trim($inSubject)) > 0){
$this->mailSubject = ereg_replace ( "n", "",$inSubject);   
true を返します。 }
false を返します。 }
/*************************************************** *
関数 setText($inText) はメール本文パラメータをテキスト形式で設定します $inText はデフォルトのテキスト コンテンツです
戻り値は true です
************* ***** ***********************/
function setText($inText){
if(strlen(trim($inText)) > 0){
$this->mailText = $inText;   
true を返します。 }
false を返します。   
}
/*************************************
関数 setHTML($inHTML) はメール本文パラメータ $inHTML を設定しますHTML形式の場合 HTML形式の場合、
デフォルトの戻り値はtrueです
******************************* **********/
function setHTML($inHTML){
if(strlen(trim($inHTML)) > 0){
$this-> ;mailHTML = $inHTML;   
true を返します。 }
false を返します。 }
/**********************
関数 setAttachments($inAttachments) は、電子メールの添付ファイルを設定します。パラメータ $inAttachments
は、ディレクトリを含む文字列です。複数のファイルを含めることもできます。デフォルトの戻り値は
*************************** です。 ******* ********/
function setAttachments($inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $in添付ファイル;   
true を返します。 }
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 はメール本文を配置するために使用されます
*************************************** ********* ***********/
function loadTemplate($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)); if( strtoupper( $inFormat)== "HTML" )
return($this->setHTML($templateLineOut))
} return
}
/*******************************************
関数 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, "."); ){
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 .= "Content-Type: text/plain;
charset=us-asciin";
$outTextHeader .= "Content-Transfer-Encoding: 7bitnn";
$outTextHeader .= $this->mailText。 "n";
return $outTextHeader; /************************************************
関数formatHTMLHeader() は、メール本文の内容に HTML ファイルのヘッダーを追加します
********************************** ** ********/
function formatHTMLHeader(){
$outHTMLHeader = ""; =us-asciin";
$outHTMLHeader .= "Content-Transfer-Encoding: 7bitnn"; ;
return $outHTMLHeader;
}
/*************************************
関数 formatAttachmentHeader($inFileLocation) は、電子メール内の添付ファイルを識別します
************************************/
function formatAttachmentHeader($inFileLocation){
$outAttachmentHeader = "";
//-- 上記の関数 getContentType($inFileLocation) を使用して添付ファイルを取得しますtype
$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");
while(!feof($textFile)){
$outAttachmentHeader .= fgets( $textFile,1000);
}
//-- ファイルを閉じます fclose($textFile) .= "n"> //--非テキスト形式 次に、エンコードに 64 ビットを使用します。
else{ $outAttachmentHeader .= "Content-Type: ".$contentType. ";n";
$outAttachmentHeader .= ' 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<(count($returnArray)); $i ){
$outAttachmentHeader .= $returnArray[$i]; }
} return $outAttachmentHeader;
/*******************************
関数 send() はメールの送信に使用され、送信された場合の戻り値は true です成功しました
* *************************************/
function send(){
//--メールヘッダーを空に設定します
$ mailHeader = "";
//--CC を追加します:
if($this->mailCC != "")
$mailHeader .= "CC: ".$this->mailCC. "n";
//-- シークレット コピーの人物を追加
if($this->mailBCC != "")
$mailHeader .= "BCC: ".$this->mailBCC。 "n";
//--送信者を追加します
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-Version: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n"; border="'.$bodyBoundary. '"';
$mailHeader .= "nnn";
//--メール本文と境界を追加します
$mailHeader .= "--".$bodyBoundary. "n";
$mailHeader;
$mailHeader .= "--".$bodyBoundary. "n";
$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. '"'. "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"; .= ' 境界="'.$bodyBoundary. '"';
$mailHeader .= "nnn"; mailHeader .= $textHeader; = "--".$bodyBoundary ;
$mailHeader .= $htmlHeader .
//--添付ファイルの値を取得します。 >//--添付ファイルの数に基づいてループします。
for($i=0;$i//--$mailHeader を分割します。= "n- -".$attachmentBoundary. "n";
//--添付ファイル情報
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .= "--".$attachmentBoundary. "- -";
return mail($this->mailTo,$this->mailSubject, "",$mailHeader); false;
}
}
?>

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