検索

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 を返します。 }
}
?>


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

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

セッションIDをどのくらいの頻度で再生する必要がありますか?セッションIDをどのくらいの頻度で再生する必要がありますか?Apr 23, 2025 am 12:03 AM

セッションIDは、機密操作の前、30分ごとにログイン時に定期的に再生する必要があります。 1.セッション固定攻撃を防ぐためにログインするときにセッションIDを再生します。 2。安全性を向上させるために、敏感な操作の前に再生します。 3.定期的な再生は長期的な利用リスクを減らしますが、ユーザーエクスペリエンスの重量を量る必要があります。

PHPでセッションCookieパラメーターをどのように設定しますか?PHPでセッションCookieパラメーターをどのように設定しますか?Apr 22, 2025 pm 05:33 PM

PHPのセッションCookieパラメーターの設定は、session_set_cookie_params()関数を通じて達成できます。 1)この関数を使用して、有効期限、パス、ドメイン名、セキュリティフラグなどのパラメーターを設定します。 2)session_start()を呼び出して、パラメーターを有効にします。 3)ユーザーログインステータスなど、ニーズに応じてパラメーターを動的に調整します。 4)セキュリティを改善するために、セキュアとhttponlyフラグを設定することに注意してください。

PHPでセッションを使用する主な目的は何ですか?PHPでセッションを使用する主な目的は何ですか?Apr 22, 2025 pm 05:25 PM

PHPでセッションを使用する主な目的は、異なるページ間でユーザーのステータスを維持することです。 1)セッションはsession_start()関数を介して開始され、一意のセッションIDを作成し、ユーザーCookieに保存します。 2)セッションデータはサーバーに保存され、ログインステータスやショッピングカートのコンテンツなど、さまざまなリクエスト間でデータを渡すことができます。

サブドメイン間でセッションをどのように共有できますか?サブドメイン間でセッションをどのように共有できますか?Apr 22, 2025 pm 05:21 PM

サブドメイン間でセッションを共有する方法は?一般的なドメイン名にセッションCookieを設定することにより実装されます。 1.セッションCookieのドメインをサーバー側の.example.comに設定します。 2。メモリ、データベース、分散キャッシュなど、適切なセッションストレージ方法を選択します。 3. Cookieを介してセッションIDを渡すと、サーバーはIDに基づいてセッションデータを取得および更新します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)