ホームページ php教程 php手册 PHP を使用して MIME メールを送信する (5)

PHP を使用して MIME メールを送信する (5)

Jun 21, 2016 am 09:08 AM
email quot this

マイム

次に検証するメソッドは build_message() です。これは作業の大部分を占めますが、
gen_email() メソッドを通じて呼び出されます。 build_message() はプライベート メソッドであることに注意してください。


function build_message() {

$msg = "";
$boundary = 'PM'.chr(rand(65, 91)).'------'.md5( uniqid(rand())); # 境界識別子
$nparts = sizeof($this->mimeparts);

//ケース 1: 添付ファイル リストがあるため、MIME ヘッダーは multipart/mixed である必要があります
if ( is_array( $this->mimeparts) && ($nparts > 1)) {
$c_ver = "MIME バージョン: 1.0".CRLF;
$c_type = 'Content-Type:
multipart/mixed;'.CRLF ." 境界="$boundary"".CRLF;
$c_enc = "コンテンツ転送エンコーディング: ".BIT7.CRLF;
$c_desc = $c_desc?"コンテンツ説明: $c_desc".CRLF;
$ warning = CRLF.WARNING.CRLF.CRLF;

// MIMIE セグメントがある場合、メール本文も添付ファイルになります
if (!empty($this->body)) {
$this- >attach( $this->body, BODY, TEXT, BIT7);
}

// 次に、メールの各 MIME セグメントを作成します
for ($i=0; $i < $nparts; $i++) {
if (! empty($this->mimeparts[$i]))
$msg .= CRLF.'--'.$boundary.CRLF.$this->mimeparts[$i].CRLF;
$msg . = '--'.$boundary.'--'.CRLF;
$msg = $c_ver.$c_type.$c_enc.$c_desc.$warning.$msg; !empty($this ->body)) $msg .= $this->body.CRLF.CRLF;
return $msg;

?> このメソッドは少し矛盾していますが、そして複雑です。それは見方次第です。

各 MIME セグメントには境界タグがあり、このタグには一意の ID があることを以前 (MIME の基本で) 読みました。エッジ
境界マーカーは以下で使用されます。
添付ファイルを分割する必要がある場所を示す MIME ヘッダー
MIME セグメント。添付ファイルの境界を区切るために各セグメントの前後で実際に使用されます。 (Alexander の写真
と地図付きのメールを思い出してください!)
(覚えておいてください: 範囲の終わりを示すために、最後の境界マークは 2 つのハイフン (--) で終わる必要があります)。
$boundary には境界マークが含まれており、乱数によって一意に生成され、MD5 ハッシュ化されます。さらに、$boundary の前に「PM?」を
付けます。「?」はランダムな文字です。 $boundary の例は
"PMK------2345ee5de0052eba4daf47287953d37e" です (PM は PHP MIME の略なので、可能な
初期値に変更できます!)

MIME ヘッダーを生成するプロセスでは、次の 2 つの状況が発生します。考慮する必要があります。これらの条件は、電子メールの元の本文 (コンストラクター
の $body) の表示方法と MIME ヘッダーの特定の表現に影響します。ケース 1 はこの記事を書く理由であり、次のことがわかります: はい
多くの添付ファイルが含まれています。この場合、「これ
は MIME
エンコーディング メッセージです」という警告文字列がメッセージの一部として挿入されることに注意してください。したがって、実際のメッセージ本文自体も添付ファイルとしてメッセージに追加する必要があります。電子メールのテキストは通常​​、添付ファイルのリスト
の最初の添付ファイルであり、この場合は $mimeparts です。
$mimeparts インデックスを占有するのはまさにこれが理由で、最初のインデックス (0) を電子メールのテキスト部分に使用できるようにします。メール本文は7ビットエンコードで添付する必要があります。

if (!empty($this->body)) {
$this->attach($this->body, BODY, TEXT, BIT7)
}

?>

上記の小さなコードは、電子メールのテキスト部分を MIME 添付ファイルとして添付する作業を完了します。 'BODY' 定数を使用して、attach() に添付ファイルを追加する場所を
指示することに注意してください。

2 番目のケースは、添付ファイルが存在しない場合です。この場合、メッセージ テキストが提供される場合、ローカル変数 $msg に含まれる唯一の情報になります。この場合、MIME ヘッダーは必要ありません。 (ただし、この場合、MIME-Version ヘッダーのみを指定する必要もあります
----戻って、前のデモの最も単純な MIME 情報を見てください。)

MIME 情報ヘッダー (MIME-Version 、Content-Type、
など) は添付ファイルがある場合に作成されます。 MIME ヘッダーを使用してメッセージ本文を作成するには、まず MIME ヘッダーを作成する必要があります。有効な各 MIME セグメントは、$mimeheaders 配列を通じて反復的に処理されます。
ここで実際に境界線マーカーが使用されます。ルールの一貫性に従って、MIME セグメントには 2 つのコネクタ ('--
'.$BOUNDARY.crlf) が接頭辞として付けられ、最後の MIME セグメントの後に、電子メールの範囲を示す境界識別子の後に 2 つのコネクタが追加されます。 。
変数 $msg 内の完全な情報がこのメソッドの値として返されます。
次のメソッド get_email() は、build_message() メソッドによる MIME メッセージの生成を完了します。 build_message() は
なので内部メソッド get_email() は RFC 822 ヘッダーを作成し、build_message() を呼び出した後に MIME 情報を追加します。


function gen_email($force=false) {

if (!empty($this->email) && !$force) return $this->email ; //
処理を保存します
$email = "";
if (empty($this->subject)) $this->subject = NOSUBJECT;
if (!empty($this->from)) $email .= 'From: ' .$this->from.CRLF;
if (!empty($this->headers)) $email .= $this->headers.CRLF;
$email .= $this->build_message() ;
$this->email = $email;
return $this->email;

?> クラスのメンバー $email は、生成された電子メール情報全体を所有します。メッセージの不必要な再生成を避けるために、このメソッドはメール ヘッダーの作成を続行し、$mail が空の場合にのみ build_message() を呼び出します。ただし、gen_email() を呼び出すことで再処理を強制できます。 (「宛先」メッセージが変更された場合、または新しい添付ファイルが追加された場合、呼び出し元は明示的にこれを行いたいと考えています)。

gen_email() は、よりおなじみの From ヘッダーを作成します。さらに、件名が指定されていない場合、件名はデフォルト (No
Subject) に設定されます。
To と Subject
の内容は後で保存されません。このメソッドは完全な電子メール メッセージを返し、MIME メッセージの作成タスクを完了します。






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

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

電子メール、smtplib、poplib、imaplib モジュールを使用して Python で電子メールを送受信する方法 電子メール、smtplib、poplib、imaplib モジュールを使用して Python で電子メールを送受信する方法 May 16, 2023 pm 11:44 PM

電子メールの流れは次のとおりです: MUA: MailUserAgent - メール ユーザー エージェント。 (つまり、Outlook に似た電子メール ソフトウェア) MTA: MailTransferAgent - メール転送エージェント。NetEase、Sina などの電子メール サービス プロバイダーです。 MDA: MailDeliverAgent - メール配信エージェント。電子メール サービス プロバイダーのサーバー sender->MUA->MTA->MTA->if

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

この点を理解してフロントエンド担当者の7割をキャッチアップした記事 この点を理解してフロントエンド担当者の7割をキャッチアップした記事 Sep 06, 2022 pm 05:03 PM

同僚は、これによって指摘されたバグのために立ち往生しました。Vue2 のこの指摘の問題により、アロー関数が使用され、その結果、対応する props を取得できなくなりました。私がそれを彼に紹介したとき、彼はそれを知りませんでした。その後、私はわざとフロントエンド コミュニケーション グループに目を向けました。これまでのところ、フロントエンド プログラマーの少なくとも 70% はまだそれを理解していません。今日私はそれを共有しますyou this link. もしすべてが間違っている場合 まだ学習していない場合は、大きな口を与えてください。

Vue2 がこれを通じてさまざまなオプションのプロパティにアクセスできる理由について話しましょう Vue2 がこれを通じてさまざまなオプションのプロパティにアクセスできる理由について話しましょう Dec 08, 2022 pm 08:22 PM

この記事は、vue ソース コードを解釈するのに役立ち、これを使用して Vue2 のさまざまなオプションのプロパティにアクセスできる理由を紹介します。

Win10 メールボックスに添付ファイルを挿入する方法のチュートリアル Win10 メールボックスに添付ファイルを挿入する方法のチュートリアル Jan 07, 2024 pm 12:14 PM

日常生活の中で仕事でメールを送信する必要があるユーザーは多く、コミュニケーションのためにさまざまなプラグイン素材を添付する必要があるユーザーもいます。以下の詳細なチュートリアルを見てみましょう。 Win10 メールボックスに添付ファイルを挿入する方法: 1. メールボックスを開きます。 2. 左上隅の「新規メール」アイコンをクリックします。 3. 右上隅にある「挿入」をクリックします。 4. 右上隅にある「添付ファイル」をクリックします。 . 必要な「添付ファイル」を選択します 6. 完了

Java でこのメソッドを使用する方法 Java でこのメソッドを使用する方法 Apr 18, 2023 pm 01:58 PM

1. this キーワード 1. this の型: どのオブジェクトが呼び出されるかがそのオブジェクトの参照型 2. 使用法の概要 1. this.data;//アクセス属性 2. this.func();// アクセスメソッド 3.this ( );//このクラス内の他のコンストラクタを呼び出す 3. 使い方の説明 1.this.dataはメンバメソッドで使用しているので、これを追加しないとどうなるかを見てみましょう classMyDate{publicintyear;publicintmonth;publicintday; publicvoidsetDate(intyear, intmonth,intday){はい

jQuery でこのキーワードを使用する賢い方法 jQuery でこのキーワードを使用する賢い方法 Feb 25, 2024 pm 04:09 PM

jQuery での this キーワードの柔軟な使用 jQuery では、this キーワードは非常に重要かつ柔軟な概念であり、現在操作されている DOM 要素を参照するために使用されます。このキーワードを合理的に使用することで、ページ上の要素を簡単に操作し、さまざまなインタラクティブな効果や機能を実現できます。この記事では、特定のコード例を組み合わせて、jQuery でのこのキーワードの柔軟な使用方法を紹介します。簡単なこの例 まず、簡単なこの例を見てみましょう。あるとします。

これは何ですか? JavaScript でのこれの詳細な分析 これは何ですか? JavaScript でのこれの詳細な分析 Aug 04, 2022 pm 05:02 PM

これは何ですか?次の記事では、JavaScript でのこれについて説明し、関数の呼び出し方法の違いによる違いについて説明します。

See all articles