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

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

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

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 までご連絡ください。
PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

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

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

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

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

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

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

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

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

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

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

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

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

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境