multipart/alternativeサブタイプ(HTMLで作ったとき)以外のものは、text/htmlパーツが入ったMIMEとしてHTMLを送るのに対し、GmailのようなwebmailsはMIMEメッセージを送る理由は何ですか?マルチパート/代替サブタイプ(クライアントが使用する場合)?
答えて
multipart/alternative
は、各部分が同じ(または類似の)内容の「代替」バージョンであり、それぞれが「Content-Type」ヘッダーで示される異なる形式であることを示します。フォーマットは、それらがオリジナルにどれくらい忠実であるか、最も忠実でないものから最も忠実なものまで、順序付けられます。
Gmailのようなメールエージェントは、自分が何をしているのかを知り、text/html
をtext/plain
に変換して両方のメールボックスにメールを入れて、受信側で使用する代替方法を決定させます。
HTMLコンテンツからテキストのみのバージョンを抽出する方法を知らないメールエージェントもあります。なぜなら、開発者はそれを実装するのを邪魔しなかったからです。したがって、text/html
に代替を送信するだけです。
そして時々 - 私はそれらを狂ったものと呼んでいます - multipart/alternative
を送信しますが、実際には代わりにtext/htmlを入れます。それは本当に素晴らしいわけではありませんが、いかなる仕様にも違反していません。
RFC 2046のsection 5.1.4は、送信者が同じメッセージの異なる、交換可能な表現を提供し、その能力のために最も適切なプレゼンテーションの形式を選択したために受信機にそれを残すことができるようにmultipart/alternative
MIMEタイプを定義します。ユーザに対する各表現の一般的な意味は保持されるべきであるが、ある表現から他の表現への情報の損失は通常ある(例えばtext/html
に関するtext/plain
のフォーマット情報が欠けている)。代替案は、一般的に最も明瞭なものから最も豊富なものに順序付けられるべきである。すなわち、代替が再びtext/html
およびtext/plain
である場合、text/plain
が最初に来るべきである。これは、最も解釈しやすい部分が最初に現れる非MIME準拠の視聴者のユーザを助ける。一般的に、MIME準拠のビューアは、それが最も望ましいので、それが見ることができる最後の表現を表示する必要があります。
このコンテンツタイプは、多くの場合、異なる番号のリソースが1つのメッセージに結合されているmultipart/mixed
と対比されます。
一部のメールサービスがメッセージを提供する主な理由は、受信側でさまざまなタイプの表示アプリケーションをサポートすることです。multipart/alternative
例えば、HTMLをレンダリングする能力がない視聴者もいれば、メッセージをすべて読むことができるようにtext/plain
表現を必要とする視聴者もいます。同時に、他の視聴者はHTMLをレンダリングする能力を持ち、メッセージがtext/html
として配信されたときのユーザーエクスペリエンスをはるかに向上させることができます。 multipart/alternative
メッセージで囲まれた両方の表現を配信することによって、幅広い視聴者をサポートすることと、より能力の高い視聴者のためのユーザエクスペリエンスを向上させることとの間のトレードオフに対する最も柔軟な解決策が得られる。
詳細はRFC 2046を参照してください。
- 1. ProgressBoxを使用する場合のSystem.Web.HttpContext.Currentの代替
- 2. 代替品の場合は、
- 3. マルチパート/代替メールを作成するためにmuttでPythonを使用
- 4. 代替ヌクレオチドがミスセンス変異につながる場合
- 5. HTTPクライアントのヒントの代替
- 6. Spring/Hibernateを使用している場合のFreemarkerの代替方法は?
- 7. 3つの代替がある場合のExcel式
- 8. redisで並べ替えられたセットを使用するための代替データモデル(Django/Pythonプロジェクトの場合)
- 9. HTMLとプレーンテキストの電子メールのマルチパート/代替メール
- 10. マルチパートgzipファイルのランダムアクセス(Javaの場合)
- 11. 初期値がない場合のVlookupの代替値
- 12. Snap SVGを使用している間の代替/代替イメージ
- 13. ブラウザをズームインする場合の代替画像
- 14. クライアント/サーバアプリケーションに異なるポートを使用する場合
- 15. 使用の代替チェックボックス
- 16. フリーダの代替使用
- 17. prop.test代替ステートメントの使用
- 18. TrueCrypt代替APIを使用
- 19. JSXを使用するリアクションの代替
- 20. Wordpress代替CSSファイルを使用する
- 21. %in%の代替を使用するサブセットデータ
- 22. 代替レジスタを使用するZ80アセンブリ
- 23. 統合テスト用の代替ツール
- 24. PHPでマルチパート/代替電子メールを正しく送信する方法
- 25. ratchetphp/Pawl websocketクライアントを使用する場合の問題
- 26. Go httpクライアントを使用する場合は
- 27. Silverlight_SDKの代替場所
- 28. この場合、プレーンポーリングの代替手段は何ですか?
- 29. 並べ替えアルゴリズムを使用する場合
- 30. "マルチパート/フォームデータ"の使用
良い説明。 –