ホームページ バックエンド開発 PHPチュートリアル PHP を使用して POP3 メールをデコードする 2_PHP チュートリアル

PHP を使用して POP3 メールをデコードする 2_PHP チュートリアル

Jul 13, 2016 pm 05:26 PM
php pop3 s 著者 成し遂げる 方法 使用 導入 コーディング デコード 郵便

MIME エンコード方式の概要 (投稿者: Chen Junqing、2000 年 10 月 24 日 15:09) MIME エンコード方式の概要 Subject: =?gb2312?B?xOO6w6Oh?= これがメールの件名ですが、エンコードされているため、内容がわかりません。元のテキストは「Hello!」です。まず、MIME エンコードの 2 つの方法を見てみましょう。 電子メールをエンコードする本来の理由は、インターネット上の多くのゲートウェイが漢字などの 8 ビットの内部コード文字を正しく送信できないためです。エンコードの原理は、受信機が正しく送信できるように 8 ビット コンテンツを 7 ビット形式に変換し、受信後に 8 ビット コンテンツに復元することです。 MIME は「MultiPurpose Internet Mail Extensions」の略称で、MIME プロトコルが登場する以前は UUENCODE などの暗号化方式がありましたが、MIME プロトコルのアルゴリズムがシンプルで拡張しやすいため、現在ではメールのエンコードが主流となっています。 8 ビット文字の送信に使用されるだけでなく、電子メールに添付された画像、音声などのバイナリ ファイルの送信にも使用され、多くの MIME ベースのアプリケーションが拡張されています。エンコード方式に関して、MIME は Base64 と QP (Quote-Printable) の 2 つのエンコード方式を定義しています。Base64 は汎用方式であり、その原理は非常に単純です。つまり、3 バイトのデータが 4 バイトで表現されるため、この 4 バイトのうち、実際に使用されるのは最初の 6 ビットだけなので、7 ビット文字しか送信できなくても問題ありません。 Base 64 の略語は通常「B」です。このレターの件名は Base64 エンコーディングを使用します。 もう 1 つの方法は、QP (Quote-Printable) 方法で、通常は「Q」方法と略されます。その原理は、8 ビット文字を 2 つの 16 進値で表し、先頭に「=」を追加することです。したがって、QP エンコード後のファイルは通常、 =B3=C2=BF=A1=C7=E5=A3=AC=C4=FA=BA=C3=A3=A1 のようになっていることがわかります。 PHP には、デコードを簡単に実装できる 2 つの関数があります。base64_decode() と quote_printable_decode() です。前者は、base64 エンコードのデコードに使用でき、後者は、QP エンコード方式のデコードに使用できます。 次に、Subject: =?gb2312?B?xOO6w6Oh?= の内容を見てみましょう。これは完全なエンコードではなく、その一部のみが 2 つのマークで囲まれています。後で説明しますが、このテキストの文字セットは GB2312 であり、? の後の B は Base64 エンコーディングを表します。この分析を通じて、この MIME デコード関数を見てみましょう: (この関数は、PHPX.COM の Web マスターである Sadly によって提供されています。私はそれをクラスに追加し、いくつかの修正を加えました。ありがとうございます) function decode_mime ( $string) { $pos = strpos($string, =?); if (!is_int($pos)) { $string を返す } $preceding = substr($string, 0, $pos) ); // 先行するテキストを保存します。 $search = substr($string, $pos+2); /* MIME ヘッダーの仕様では、これが単一のエンコードされた単語の最長です */ $d1 = strpos($search, ? ); if (!is_int( $d1)) { Return $string; } $charset = substr($string, $pos+2, $d1); //文字セットの定義部分を取得します $search = substr($) search, $d1+1); / /文字セット定義以降の部分 =>$search; $d2 = strpos($search, ?); if (!is_int($d2)) { return $string ; } $encoding = substr($search, 0, $d2 ); ////2 つの間のエンコード方法の一部?: q または b $search = substr($search, $d2+1); = strpos($search, ?=); //$d2+ 1 と $end の間はエンコードされた内容です: => $endcoded_text; if (!is_int($end)) { return $string = substr($) search, 0, $end); $rest = substr ($string, (strlen($preceding . $charset . $encoding . $encoded_text)+6)); 6 文字のスイッチ ($encoding) { case Q: case q: //$encoded_text = str_replace(_, %20, $encoded_text); //$encoded_text = str_replace(=, %, $encoded_text); urldecode($encoded_text); $decoded=quoted_printable_decode( $encoded_text); if (strto lower($charset) == windows-1251) { $decoded = Convert_cyr_string($decoded, w, k); windows-1251) { $decoded =convert_cyr_string($decoded, w, k); $decoded を返します。 $rest); } } この関数は、再帰的メソッドを使用して、上記の件名セグメントを含む文字をデコードします。プログラムにコメントが追加されました。 PHP プログラミングの基本的な知識があれば誰でも理解できると思います。この関数も、base64_decode() と quote_printable_decode() という 2 つのシステム関数を呼び出してデコードされますが、電子メール ソース ファイルで大量の文字列分析が必要になります。ただし、PHP の文字列操作は、すべての言語の中で最も便利で無料であると言えます。関数 $preceding の最後の戻り値 $this->decode_mime($rest); この関数は実際には後で紹介する MIME デコード クラスに配置されるため、 >Decode_mime が使用されます。 ($rest) この形式のメソッド呼び出し。 それでは本文を見てみましょう。これは、MIME の一部のヘッダー情報に関連しています。最初に簡単に説明します (さらに詳しく知りたい場合は、MIME の公式ドキュメントを参照してください)。 MIME-Version: 1.0 使用される MIME のバージョン番号を示します (通常は 1.0); Content-Type: テキストの種類を定義します。たとえば、text/plain はテキストの種類を知るために使用します。フォーマットされていないテキスト本文、text/html は Html ドキュメントを表し、image/gif は gif 形式の画像を表します。 この記事で説明する必要があるのは、電子メールで一般的に使用される複合タイプです。マルチパート タイプは、テキストが複数の部分で構成されていることを示します。次のサブタイプは、電子メールで使用される 3 つのタイプです。 multipart/alternative: テキストが 2 つの部分で構成されていることを示し、どちらかを選択できます。それらのいずれかです。主な機能は、エッセイにテキスト形式と HTML 形式の両方がある場合、表示する 2 つの本文のいずれかを選択できることです。HTML 形式をサポートするメール クライアント ソフトウェアでは通常、HTML 本文が表示されますが、HTML 形式をサポートしないメール クライアント ソフトウェアでは HTML 本文が表示されます。 ; テキスト本文を表示します。 multipart/mixed: テキストと添付ファイルの間の関係を参照して、文書の複数の部分が混合されていることを示します。電子メールの MIME タイプが multipart/mixed の場合、電子メールに添付ファイルが含まれていることを意味します。multipart/relative: ドキュメントの複数の部分が関連していることを意味し、通常は Html テキストとその関連画像を記述するために使用されます。 たとえば、電子メールに添付ファイルが含まれ、HTML 形式とテキスト形式の両方の本文がある場合、電子メールの構造は次のようになります。 Content-Type: multipart/mixed Part 1: Content Type: multipart/alternative : テキスト本文; HTML 形式のテキスト パート 2: 添付ファイルの電子メールの終了文字="----=_NextPart_000_0007_01C03166.5B1E9510"、連絡先タイプ: multipart/* の各コンテンツには、複数の部分間の区切りを示すこのような記述があります。この区切り記号はテキスト内にありません。文書内では、セクションの始まりを示すために「--」と境界が使用され、文書の最後に「--」が追加され、その後に「--」が追加されます。最後に「」は文書の終わりを示します。複合タイプはネストできるため、電子メール内に複数の境界が存在する可能性があります。 最も重要な MIME ヘッダー タグもあります。 Content-Transfer-Encoding:base64 これは、ドキュメントのこの部分のエンコード方式を示します。これは、上で紹介した Base64 または QP (Quote-Printable) です。この記述を識別することによってのみ、正しい解読方法を使用して解読することができます。 スペースの制限があるため、これは MIME の唯一の紹介です。以下に、MIME メールをデコードするためのクラスを示し、それについて簡単に説明します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/531920.html技術記事 MIME エンコード方式の概要 (投稿者: Chen Junqing、2000 年 10 月 24 日 15:09) MIME エンコード方式の概要 Subject: =?gb2312?B?xOO6w6Oh?= これがメールの件名ですが、エンコードされているため、 ...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

なぜPHPを使用するのですか?利点と利点が説明されました なぜPHPを使用するのですか?利点と利点が説明されました Apr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

PHPの影響:Web開発など PHPの影響:Web開発など Apr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHP対Python:ユースケースとアプリケーション PHP対Python:ユースケースとアプリケーション Apr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

PHPの継続的な使用:その持久力の理由 PHPの継続的な使用:その持久力の理由 Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

See all articles