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. マルチパート/代替メールを作成するためにmuttでPythonを使用
- 3. 代替ヌクレオチドがミスセンス変異につながる場合
- 4. Spring/Hibernateを使用している場合のFreemarkerの代替方法は?
- 5. マルチパートgzipファイルのランダムアクセス(Javaの場合)
- 6. HTMLとプレーンテキストの電子メールのマルチパート/代替メール
- 7. ブラウザをズームインする場合の代替画像
- 8. クライアント/サーバアプリケーションに異なるポートを使用する場合
- 9. TrueCrypt代替APIを使用
- 10. フリーダの代替使用
- 11. %in%の代替を使用するサブセットデータ
- 12. Wordpress代替CSSファイルを使用する
- 13. 統合テスト用の代替ツール
- 14. ratchetphp/Pawl websocketクライアントを使用する場合の問題
- 15. Silverlight_SDKの代替場所
- 16. "マルチパート/フォームデータ"の使用
- 17. 継承の代わりに委譲を使用する場合
- 18. pxの代わりにemを使用する場合のベストプラクティス
- 19. 「fun」の代わりに「function」を使用する場合
- 20. std :: setの代わりにstd :: unordered_setを使用する場合
- 21. oledbプロバイダーの代替手段は、.NETでアクセス(mdb)リンクテーブルのSQL Serverを使用する場合です
- 22. はmaclの場合のみgrowl_notifyですか?ここがウィンドウの代替
- 23. Railsの代わりにsend_fileの代替ファイルを使用する
- 24. CDIで使用する代替Webフレームワーク(JSFの代わりに)
- 25. Instamapperの代替品をお探しの場合
- 26. IOCを使用している場合、ASP.NETプロバイダモデルに最適な代替方法は何ですか?
- 27. gethrtime()の代わりにgethrvtime()を使用する方が適切な場合
- 28. プロバイダクラスがJ2MEで使用する代替手段
- 29. のNoSQL FREE代替(代替ravendbする)
- 30. 代替テキストが空白の場合、スライドショーのキャプションを表示しない
良い説明。 –