ホームページ  >  記事  >  バックエンド開発  >  完全に機能する PHP メール クラスを推奨する_PHP チュートリアル

完全に機能する PHP メール クラスを推奨する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:58:20956ブラウズ

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

コードをコピーします。 コードは次のとおりです。 ;? 「email.class」を含める $mail->setTo("a@a.com") //受信者
$mail-> "); //コピー送信
$mail-> setCC("d@b.com,e@c.com"); //シークレットCC
$mail->setFrom("f@f.com") ;//送信者
$mail->setSubject("Subject"); //件名
$mail->setText("Text Format") //送信テキスト形式も変数にすることができます
$mail- >setHTML("html Format");//送信する HTML 形式は変数にすることもできます
$mail->setAttachments("c:a.jpg");//添付ファイルを追加するには、パスを指定する必要があります
$ mail->send(); // メールを送信します




コードをコピーします
コードは次のとおりです:
class Email {
//--- グローバル変数を設定します
var $mailTo = ""; // 受信者
var $mailBCC = "";秘密のカーボンコピー
var $mailFrom = ""; // 送信者
var $mailSubject = ""; // テキスト形式のレター本文
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() 関数を使用してメール アドレスに基づいて照合します。 on "," Split
$addressArray =explode( ",",$inAddress);
//--ループを通じてメールアドレスの有効性を確認します
for($i=0;$icheckEmail($addressArray[$i])==false) return false; }
//--すべての有効な電子メール アドレスは配列
$this->mailCC = implode( $addressArray, ",");
return true; }
/**************************************************
機能setBCC($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, ",");
true を返す
}
/*************************************************** * *************
関数 setFrom($inAddress): 電子メールを含めるように送信者アドレス パラメーター $inAddress を設定します
アドレス文字列のデフォルトの戻り値は true です
***** ******* *******************************/
function setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom = $inAddress;
true を返す; }   
/**********************
関数 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 は、ディレクトリを含む文字列であり、複数を含むこともできます。ファイルはカンマで区切られ、デフォルトの戻り値は true です
************************************* ********** **/
function setAttachments($inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;   
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));
else if( strtoupper($inFormat)== "HTML" )
return( $this ->setHTML($templateLineOut));
} return false;
/******************************************
関数 getRandomBoundary($offset) はランダムな境界を返します値
パラメータ $offset は整数です – マルチパイプライン呼び出しに使用され、md5() でエンコードされた文字列を返します
************************** ***** *******************/
function getRandomBoundary($offset = 0){
//--乱数生成
srand(time () +$offset);
//--md5 でエンコードされた 32 ビット文字列を返す
return ( "----".(md5(rand())) }
/*******************************************
関数: getContentType($inFileName) に使用添付ファイルの種類を決定します
******************************************* **** *** /
function getContentType($inFileName){
//--パスを削除
$inFileName = Basename($inFileName);
//--拡張子なしのファイルを削除
if(strrchr($inFileName, ".") = = false) {
return "application/octet-stream";
}
//-- ゾーン拡張子を指定して判断します
$extension = strrchr($inFileName, ".");
switch($extension){
case " .gif": "image/gif" を返す;
case ".gz": "application/x-gzip" を返す;
case ".htm": "text/html" を返す;
case ".html": "を返すtext/html";
case ".jpg": "image/jpeg" を返す;
case ".tar": "application/x-tar" を返す;
case ".txt": "text/plain" を返す ;
case ".zip": "アプリケーション/zip" を返す
デフォルト: "アプリケーション/オクテットストリーム" を返す
}
/*************************************************
formatTextHeader関数テキストの内容を変換します テキストのファイルヘッダーを追加します
*************************************** ********* **********/
関数formatTextHeader(){ $outTextHeader = "";
$outTextHeader .= "Content-Type: text/plain;
charset=us-asciin";
$outTextHeader .= "Content-Transfer-Encoding: 7bitnn"; .= $this->mailText. "n";
return $outTextHeader;
function formatHTMLHeader(){
$outHTMLHeader = ""
$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( "text",$contentType){
$outAttachmentHeader .= "Content-Type: " . $contentType. ";n";
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "n"; $ outAttachmentHeader .= "Content-Disposition:attachment;n";
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'
$textFile = fopen($inFileLocation, "r " );
while(!feof($textFile)){
$outAttachmentHeader .= fgets($textFile,1000);
}
//--ファイルを閉じる fclose($textFile);
}
//--非テキスト形式は 64 ビットでエンコードされます
else{ $outAttachmentHeader .= "Content-Type: ".$contentType. ";n"
$outAttachmentHeader .= ' name="'.basename ($inFileLocation). '" '. "n";
$outAttachmentHeader .= "コンテンツ転送エンコーディング:base64n";
$outAttachmentHeader .= "ファイル名 ="'.basename($) inFileLocation). "nn";
//-- エンコード用の外部コマンド uuencode を呼び出します
for ($i = 1; $i< (count($returnArray)); $i++){
$outAttachmentHeader .= $returnArray[$i];
}
} return $outAttachmentHeader;
/*******************************
関数 send() はメールの送信に使用され、送信に成功すると戻り値は true になります
* **** ****************************/
関数(){
//--メールヘッダーを空に設定します
$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();
//--MIME バージョンを設定します
$mailHeader.= "MIME バージョン: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n";
$mailHeader .= 'boundary="'.$bodyBoundary. '"'; nnn";
//--メール本文と境界を追加
$mailHeader .= "--".$bodyBoundary. "n";
$mailHeader .= $textHeader;
$mailHeader .= "--".$bodyBoundary . "n";
//--HTML タグを追加します
$mailHeader .= "n--".$bodyBoundary
メールを送信します($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 .= "nnn";
$mailHeader .= "--".$bodyBoundary;
$mailHeader .= "--".$bodyBoundary ;
$mailHeader .= $htmlHeader;
$mailHeader .= "n--".$bodyBoundary. "--";
$attachmentArray =explode( ",",$this-> ;mailAttachments);
//--添付ファイルの数に応じてループします
for($i=0;$i//-- $mailHeader .= "n- -".$attachmentBoundary. "n";
//--添付ファイル情報
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .= "--".$添付ファイルの境界。



http://www.bkjia.com/PHPjc/317640.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/317640.html

技術記事
PHP -- 次のクラスの機能は非常に強力です。HTML 形式で電子メールを送信できるだけでなく、添付ファイルも送信できます。次のようにコードをコピーします。 $mail-setTo( 「a@a.c...

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