PHP クラス 電子メールを送信するためのフル機能のクラス
コードをコピー コードは次のとおりです:
<?php
class Email {
//--- グローバル変数を設定します
var $mailTo = "" // 受信者
var $mailCC = " "; // Cc
var $mailBCC = ""; // 秘密 Cc
var $mailFrom = ""; // 送信者
var $mailSubject = ""; // 件名
var $mailText = ""; // テキスト形式のレター本文
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 つ以上の
電子メール アドレスを含む文字列 (電子メール アドレス変数) に設定します。複数の電子メール アドレスを区切るにはカンマを使用します。デフォルトの戻り値は
本当の
*******************************************/
function setBCC($inAddress) {
//--explode() 関数を使用して、「,"
$addressArray =explode( ",",$inAddress) に従ってメール アドレスを分割します。
//--メール アドレスを分割します。ループによって合法性をチェックします
for($i=0;$i<count($addressArray);$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;
return true;
} return false; }
/************************
関数 setSubject($inSubject) は、電子メールの件名パラメーター $inSubject を文字列に設定するために使用されます。
デフォルトの戻り値は true
*******************************************/
function setSubject($inSubject){
if(トリム($inSubject)) > 0){
$this->mailSubject = ereg_replace( "n", "",$inSubject);
return false; >/*************************************************** *
関数 setText($inText) は、メール本文パラメータをテキスト形式で設定します。$inText は、デフォルトの戻り値です。
************* ********** **********************/
function setText($inText){
if(strlen(trim($inText)) > 0){
$this->mailText = $inText;
true を返す; }
false を返す;
/****************************************
関数 setHTML($inHTML) は電子メール本文パラメータを設定しますHTML 形式の $inHTML HTML 形式です。
デフォルトの戻り値は true
*************************** **************/
function setHTML($inHTML){
if(strlen($inHTML) ) > 0){
$this->mailHTML = $inHTML;
return false; }
/************************
関数 setAttachments($inAttachments) は電子メールの添付ファイル パラメータを設定します $inAttachments
はディレクトリを含む文字列です。複数のファイルを含めることもできます。デフォルトの戻り値は true
****************************** です。 ****** ********/
関数$inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;
return 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)は、一時ファイルを読み取り、不要な情報を置き換えます。
$inHashは、ファイルのディレクトリを見つけるために使用されます。 $inFormat はメール本文を配置するために使用されます
*********************************** ************* ***********/
functionloadTemplate($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 ビット文字を返すlength 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 。 = "コンテンツ タイプ: text/plain;
charset=us-asciin";
$outTextHeader .= "コンテンツ転送エンコーディング: 7bitnn"; . "n";
return $outTextHeader; /**************************************************
関数 formatHTMLHeader() は、HTML ファイルのヘッダーをメール本文のコンテンツに追加します
******************************** ** ********/
function formatHTMLHeader = ""
$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(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"); ( $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) . '"'. "nn";
//-- エンコード用の外部コマンド uuencode を呼び出します
exec( "uuencode -m $inFileLocation nothing_out",$returnArray);
for ($i = 1) ; $ i<(count($returnArray)); $i ){
$outAttachmentHeader .= $returnArray[$i];
}
}
/**********************************
関数 send() はメールの送信に使用され、戻り値は true です正常に送信された場合
* *************************************/
function send(){
//--メールヘッダーを空に設定します
$mailHeader = ""
//-- カーボンを追加します受信者をコピー
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();
$htmlHeader = $this->formatHTMLHeader();
//--MIME バージョンを設定します
$mailHeader "MIME バージョン: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n"
$mailHeader .= 'boundary="'.$bodyBoundary. '"'; >$mailHeader .= "nnn";
//--メール本文と境界を追加します
$mailHeader .= "-".$bodyBoundary.
$mailHeader .= $textHeader;
$mailHeader .= "--".$bodyBoundary. "n";
//--HTML タグを追加します
$mailHeader .= $htmlHeader; ".$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";
$mailHeader .= 'boundary="'.$bodyBoundary. '" ';
$mailHeader .= "nnn";
$mailHeader .= "-".$bodyBoundary.= " --".$bodyBoundary. "n";
$mailHeader .= $htmlHeader;
$mailHeader .= "n--".$bodyBoundary. "--";
//--Get添付ファイルの値
$attachmentArray =explode( ",",$this->mailAttachments);
//--添付ファイルの数に応じてループします
for($i=0;$i
//--添付ファイル情報
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .= "--".$attachmentBoundary.
return mail($this-> mailTo,$this->mailSubject, "",$mailHeader);
}
return false;
}
}
?>
使用法:
コードをコピーします
コードは次のとおりです:
<「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") );//Sender
$mail->setSubject("Subject"); //Subject
$mail->setText("Text Format");//テキスト形式で送信することも可能ですvariable
$mail->setHTML("html format");//送信する HTML 形式を変数にすることもできます
$mail->setAttachments("c:a.jpg");//添付ファイルを追加します、パスを指定する必要があります
$mail->send() //メールを送信します
?>
ホットAIツール
Undress AI Tool
脱衣画像を無料で
AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。
Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ
Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現
人気の記事
人気のツール
メモ帳++7.3.1
使いやすく無料のコードエディター
SublimeText3 中国語版
中国語版、とても使いやすい
ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
ドリームウィーバー CS6
ビジュアル Web 開発ツール
SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
ホットトピック
20606
7
13699
4
12042
4
9194
17
8574
7
PHP のピラミッド ループの数値統計: 合計、奇数、偶数の正しい数え方
Mar 04, 2026 pm 01:30 PM
この記事では、PHP ピラミッド印刷ループで生成されるすべての数値の合計数、奇数、偶数を正確にカウントする方法、一般的なロジック エラー (変数の誤用、カウント オブジェクトの混乱など) を修正する方法を詳細に説明し、実行可能な例と重要な注意事項を示します。
PHP オペレーター優先度 table_php 公式オペレーター優先度はどこで確認できますか [参考]
Mar 02, 2026 am 11:45 AM
PHP 演算子の優先順位の公式説明は、https://www.php.net/manual/en/ language.operators.precedence.php にあります。 「operatorprecedence」を直接検索するか、URL を手動で入力してアクセスする必要があります。 == と === は同じ優先順位を持ち、同じレベルに属します。エラーが発生しやすい組み合わせには &&/|| が含まれます。および/または、?: および ??、new および [];複雑な式は括弧で囲む必要があります。
PHPでネストされた配列の任意の深さの値を動的に設定する方法
Mar 04, 2026 am 11:15 AM
この記事では、キー パス配列 (['key1'、'key2'、'key3'] など) を使用して多次元連想配列の最後のノードに値を割り当て、値の転送によって引き起こされる参照失敗の問題を解決し、キーの存在検証を考慮する安全かつ効率的な方法を紹介します。
PayPal JavaScript SDKをPHPロジックに埋め込む正しい方法
Mar 04, 2026 pm 01:12 PM
この記事では、PayPalJSSDK フロントエンド コードを PHP の条件分岐 (支払い方法の判断など) に安全かつ標準的に挿入して、エコーによる混乱を招く出力、コーディングの競合、HTML 構造の損傷を回避し、ボタンが正常にレンダリングされて注文プロセスが完了するようにする方法について詳しく説明します。
PHP_PHP完全認可処理にOAuth2.0認可コードモードを実装する方法【操作編】
Apr 13, 2026 pm 11:42 PM
PHP によって生成される認可 URL には、response_type=code、client_id、redirect_uri、および state が含まれている必要があります。 redirect_uri は登録とまったく同じである必要があり (末尾のスラッシュを含む)、CSRF を防ぐために状態を比較のために $_SESSION に保存する必要があります。
PHP で空の値の代わりに文字列「null」を安全に出力する方法
Mar 04, 2026 pm 12:03 PM
PHP8 では、変数値が null の場合、ダイレクト エコーは空のコンテンツを出力します。この記事では、null 値を文字列「null」として明示的に表示するための、安全で簡潔なさまざまな方法 (null 結合演算子、三項略語など) を紹介します。
php演算子の===と==の違い_php演算子の完全等価と等価の違い【比較】
Mar 04, 2026 pm 12:18 PM
PHP の === と == の違いは何ですか?違いは「厳密か否か」ではなく、「型変換が必要かどうか」です。 == は、比較する前に、まず両側を同じ型に変換しようとします。 === このステップはスキップしてください。型が異なる場合はそのまま false となります。たとえば、0=="0" は true ですが、0==="0" は false です。たとえば、null==false は true、null===false は false です。どのような場面で驚かれやすいのでしょうか?ユーザー入力やデータベースの戻り値、JSONの解析結果など「文字列型の数値」や「混合型のデータ」の判定によく使われます。 「0」==ファ
PHPで現在のタイムスタンプを取得する方法_PHPで現在のタイムスタンプを取得する方法【操作編】
Apr 13, 2026 pm 11:51 PM
最も直接的で信頼性の高い方法は、time() 関数を使用することです。この関数は、Unix エポック以降の整数秒を返します。解析も依存性もゼロで、タイム ゾーンの影響もありません。 strtotime('now') と date('U') の使用は避け、ミリ秒の精度を得るには microtime(true) を推奨します。




