ホームページ > バックエンド開発 > PHPチュートリアル > 電子メールを送信するためのフル機能の PHP クラス

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

WBOY
リリース: 2016-06-23 13:17:35
オリジナル
777 人が閲覧しました

次のクラスの機能は非常に強力です。html 形式でメールを送信できるだけでなく、添付ファイルも送信できます
class Email {
//---グローバル変数を設定します
var $ mailTo = " "; // 受信者
var $mailCC = ""; // 秘密の Cc
var $mailSubject = ""; // 件名
var $mailText = ""; // テキスト形式のレター本文
var $mailHTML = "" // HTML 形式のレター本文
var $mailAttachments = "" // 添付ファイル
/*; $inAddress): 電子メールの処理に使用されるアドレス パラメーター $inAddress
1 つ以上の文字列、電子メール アドレス変数が含まれます。複数の電子メール アドレスを区切るにはカンマを使用します
デフォルトの戻り値は true です
***** ****** *************************************************/
function setTo($inAddress){
//--explode() 関数を使用して、「,」に従ってメール アドレスを分割します
$addressArray =explode( ",",$inAddress);
//-- 有効性を確認します。ループによるメール アドレスの取得
for($i=0;$icheckEmail($addressArray[$i])==false ) return false ; }
//--すべての有効な電子メール アドレスは配列
$this->mailTo = implode($addressArray, ","); }
/**************************************************
機能setCC($inAddress) は、カーボン コピー者の電子メール アドレスを設定します
パラメーター $inAddress は、1 つ以上の電子メール アドレス、電子メール アドレス変数を含む文字列です。
複数の電子メール アドレスを区切るにはカンマを使用します。デフォルトの戻り値は true です
**** ********************************************* ***** ******** /
function setCC($inAddress){
//--explode() 関数を使用して、「,」に従って電子メール アドレスを分割します
$addressArray =explode( ",",$inAddress);
//--ループによって確認しますメールアドレスの有効性
for($i=0;$i//--すべての正当な電子メール アドレスは配列に保存されます
$this->mailCC = implode($addressArray, ","); }
/****************************************************
関数 setBCC($inAddress) は、シークレット カーボン コピー アドレス パラメーター $inAddress を 1 つ以上の
電子メール アドレスを含む文字列に設定します。電子メール アドレス変数。複数の電子メール アドレスを区切るにはカンマを使用します。デフォルトの戻り値は
true
**** *************************************/
function setBCC( $inAddress){
//--explode() 関数を使用して、「,」に従ってメール アドレスを分割します
$addressArray =explode( ",",$inAddress);
//--explode() 関数を使用しますメールアドレスを分割するには 有効性をチェックします
for($i=0;$i{ if($this->checkEmail($addressArray[$i])==false)
return false;
}
//--すべての有効な電子メール アドレスは配列
$this->mailBCC = implode($addressArray, ",");
return true; &*/
function setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom = $inAddress; }
/* ************************************************** * *************
関数 setFrom($inAddress): 送信者アドレス パラメーター $inAddress を電子メール
アドレスを含む文字列として設定します。デフォルトの戻り値は true です
*****。 ******* ****************************** */
function setSubject($inSubject){
if(strlen(trim($inSubject)) > 0){
$this->mailSubject = ereg_replace( "n", "",$inSubject) ;
true を返す ; }
false を返す }
/***************************
関数 setSubject($inSubject) は、電子メールの件名パラメータ $inSubject を文字列に設定するために使用されます。
デフォルトの戻り値値は true です
**** ****************************************/
関数 setText($inText){
if(strlen(trim($inText)) > 0){
$this->メールテキスト = $inText ;
戻り値
}
/*************************************************** *
関数 setText($inText) は、メール本文パラメータ $inText をテキスト形式で設定します。デフォルトの戻り値は、
************ です。 *********** *****************/
関数 setHTML($inHTML);if(strlen(trim($inHTML)) > 0){
$this->mailHTML = $inHTML; }
return false; }
/************************
関数 setAttachments($inAttachments) は、メールの添付ファイル パラメーターを設定します。
はディレクトリを含む文字列です。カンマ区切りのデフォルトの戻り値は true です
*********************************** ************* **/
function setAttachments($ inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments; }
return false; } function checkEmail($inAddress){
return (ereg( "^[^@ ]+@([a-zA-Z0-9-]+.)+([a-zA-Z0-9-]{2}| net|com|gov|mil|org|edu|int)$",$inAddress));
}
/**********************************
関数 checkEmail($inAddress): この関数は以前にすでに呼び出しており、主に
使用されていますメールアドレスの正当性を確認するため
*****************************************/
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); $i//--開始位置を検索します
if(strcspn($templateLineArray[$i],$templateNameStart)==0){
//-- 対応する文字列を置き換えますvalue
$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;
/****************************************************
関数loadTemplate ($inFileLocation,$inHash,$inFormat) 一時ファイルを読み込み、
無駄な情報を置き換える パラメータ $inFileLocation はファイルのディレクトリを見つけるために使用される
$inHash 一時的な値が格納されるため $inFormat メール本文が配置されるため
************************************************ ******** ***/
function getRandomBoundary($offset = 0){
//--乱数生成
srand(time()+$offset);
//--md5 でエンコードされた 32 ビット文字列を返す
return ( "----".(md5(rand()))); /* *****************************************
関数 getRandomBoundary($offset) はランダムを返します境界値
パラメータ $offset は整数です – md5() でエンコードされた文字列を返すためのマルチパイプライン呼び出しに使用されます
************************* ****** *****************/
function getContentType($inFileName){
//-- パスを削除
$inFileName = basename($inFileName);
//-- 拡張子なしのファイルを削除
if(strrchr($inFileName, ".") == false){
return "application/octet-stream";
//--拡張子名を指定して判断します
$extension = strrchr($inFileName, "."); ( $extension){
case ".gif": return "image/gif";
case ".gz": return "application/x-gzip";
case ".htm": return "text/html"; case ".html": "text/html" を返します。
case ".jpg": "image/jpeg" を返します。
case ".txt" を返します。 return "text/plain";
case ".zip": return "application/zip";
default: 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;
} /*************************************************
関数形式HTMLHeader( )HTML ファイルのヘッダーをメールのメインコンテンツに追加します
************************************ ****** **** /
function formatHTMLHeader( ){
$outHTMLHeader = "";
$outHTMLHeader .= "Content-Type: text/html;
charset=us-asciin";
$outHTMLHeader .= "Content-Transfer-Encoding: 7bitnn" ;
$outHTMLHeader . = $this->mailHTML. "n";
/***************************************
関数 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");
while(!feof($textFile)){
$outAttachmentHeader .= fgets($textFile,1000 );
}
// -- ファイルを閉じる fclose($textFile);
$outAttachmentHeader .= "n";
}
//--非テキスト形式は 64 ビットでエンコードされます
else{ $outAttachmentHeader .= "Content-Type: ".$ contentType. ";n";
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "n";エンコーディング:base64n";
$outAttachmentHeader .= "Content-Disposition:attachment;n";
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). "nn";
//--
exec ( "uuencode -m $inFileLocation nothing_out",$returnArray);
for ($i = 1; $i$outAttachmentHeader をエンコードするための外部コマンド uuencode を呼び出します。 = $returnArray[$i]. " n";
}
} return $outAttachmentHeader
}
/*******************************
関数 send() はメールの送信に使用され、送信に成功すると戻り値は true になります
***** *****************************/
//--メールヘッダーを空に設定します
$mailHeader = "";
//-- CC の人を追加します
if($this->mailCC != "")
$mailHeader .= "CC: ".$this->mailCC. //--秘密の CC 人物を追加します
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(); ->formatHTMLHeader() ;
//--MIME バージョンを設定します
$mailHeader .= "MIME-Version: 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--".$添付ファイルの境界。 「ん」; 
//--添付ファイル情報
$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

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