MozillaZine.jp フォーラム https://forums.mozillazine.jp/ |
|
HTMLメールがソースのまま表示される https://forums.mozillazine.jp/viewtopic.php?f=3&t=17442 |
ページ 1 / 1 |
作成者: | godmacchi [ 2019年3月24日(日) 22:47 ] |
記事の件名: | HTMLメールがソースのまま表示される |
全てのHTMLメールではないのですが、ある特定の人からくるHTMLメールがソースのままメッセージウィンドウに表示されます。文字化けではなく、<html~から始まるソースです。 特定の人から来るメールが全てソース表示であればその人のメールの設定を疑うのですが、普通に表示される場合もあるため傾向が掴めないでいます。 オプション→表示→書式→詳細設定のテキストエンコーディング設定などもいじってみたのですが、特に何も変わりませんでした。また、ソースを見るとUTF-8だったり、ISOだったりするので、特にエンコーディングの違いで起こっているのではない印象です。 どなたか同じような症状が起こって、解決した方はいらっしゃらないでしょうか? |
作成者: | 偶然的通行人 [ 2019年3月28日(木) 17:31 ] |
記事の件名: | Re: HTMLメールがソースのまま表示される |
※質問するときは、「フォーラムの利用に関するご案内」、とりわけ「質問するときは」に目を通し、OS の種類や Thunderbird のバージョン、アカウントの種類(IMAP か POP か)といった使用環境についての最低限の情報を書き添えることをお勧めします。 godmacchi さんが書きました: 全てのHTMLメールではないのですが、ある特定の人からくるHTMLメールがソースのままメッセージウィンドウに表示されます。文字化けではなく、<html~から始まるソースです。 そのような表示になったとき、godmacchi さんがお使いの Thunderbird(バージョン不明)で表示形式を [プレーンテキスト] 、[オリジナル HTML] 、[シンプル HTML] に切り替えると、表示状態に変化はありますか。 そのような表示になる HTML メールは、HTML のみのシングルパートで作成されたものでしょうか、HTML とプレーンテキストのマルチパートで作成されたものでしょうか。 いくつか不明な点はありますが、一般論としていえば、こういう現象で比較的ありがちなのは、メールヘッダの Content-Type が適切に付いてないケースかと思います。 ご承知のことと思いますが、HTML メールは通常、HTML タグによって文章構造を指定する形で書かれており、Content-Type: text/html; が指定されていることによって、受信側が HTML 形式の表示に対応していれば、HTML タグや CSS を解釈した表示をするようになります。 しかし、もし Content-Type が適切に指定されていなければ、つまり Content-Type が欠落していたり、HTML メールなのに Content-Type: text/plain; となっていたら、<html> や <head> 、<body> などのタグを解釈せず、単なる文字列としてそのまま表示することになるはずです。 送信側・受信側がどんなメールソフトを使っていたとしても電子メールが成り立つ前提は、双方が電子メールシステムの仕様・規格に基づいた動作をとることにあります。共通のルールに従うから、どんな相手とでも正常なメールのやりとりが可能になります。 送信側の不注意か、別の何かの干渉かはわかりませんが、結果的に不適切な Content-Type が指定されていたと仮定すると、受信側ではヘッダ情報に従って処理しようとしますから、ご質問にあるような「HTMLメールがソースのまま表示される」といったことが起こりうるわけです。 godmacchi さんが書きました: 特定の人から来るメールが全てソース表示であればその人のメールの設定を疑うのですが、普通に表示される場合もあるため傾向が掴めないでいます。 「ある特定の人」から送られてくるメールのうち、「HTMLメールがソースのまま」表示されるときのメールと、「普通に表示される場合」のメールを、メッセージソースのレベルで比較・調査してみると、何か手掛かりがつかめるかもしれません。 ご質問の内容が上述のようなケースに当てはまるかどうかは、いまある情報だけではわかりませんから、まずはこのあたりをきちんと調べてみてはいかがでしょうか。 ソースを見たいメッセージを選択して、[Ctrl] + でメッセージソース画面が開きます。 送信者が同一人物でも、メールを作成・送信する環境条件が違う場合があります。 同様に、セキュリティ対策ソフトの関わり方の違いが影響しているのかもしれません。 通常、メールソフト以外で、送受信する電子メールに関与してくる典型例は、セキュリティ対策ソフト(ウィルス対策ソフト)の類です。この誤動作や設定ミス等で、必要なメールヘッダが書き換えられたり、削除されたりすることが稀にあります。 このあたりも、問題となるメールと、対照となるメールのメッセージソースを詳しく比較・調査することで、違いを把握できるのではないでしょうか。 メールの構造によっては、ひとつのメール内に Content-Type が複数存在することもあります。 例えば、HTML とプレーンテキストがマルチパートで送信されている場合、全体の定義の下に各パートごとに Content-Type: が存在します。 (参考) ・HTMLメールとテキストメールを同時に送信するマルチパートメールとは | SendGridブログ sendgrid.kke.co.jp/blog/?p=8262 こういったことを意識して、メッセージソースを調べてみてください。 いちおういまある情報の範囲でわかることを書かせていただきました。的外れな話になっていたらすみません。 お使いの OS や Thunderbird のバージョン、常用しているメッセージの表示形式の内容、実際に調べてみたメッセージソースの中身など、具体性のある情報が追記されれば、他の方々からも追加のアドバイスが寄せられるかもしれません。 (おことわり) 現在、健康上の制約により不定期な書き込みしかできなくなっています。すぐに応答できない場面がかなり多くなりますことを、ご容赦ください。 |
作成者: | godmacchi [ 2019年3月29日(金) 10:36 ] |
記事の件名: | Re: HTMLメールがソースのまま表示される |
偶然的通行人さま、 ご丁寧な返信ありがとうございます。使用しているThunderbirdはv60.6.0で、OSはWindows 10 Enterprise 2015 LTSB 64bitです。 表示形式を [プレーンテキスト] 、[オリジナル HTML] 、[シンプル HTML] に切り替えてはみたのですが、HTMLソースの中の文字が変化するだけでソース自体が普通のメッセージに変わることはないです。普段はシンプルHTMLで表示させています。 HTMLソースで表示されるメールのソースをざっと見てみました。全部は見れていないような気がするのですが、Content-Typeを中心に見てみたところちょっと変な感じです。まず、メッセージウインドウにHTMLソースがそのまま出ているので、そこで見てみた所<head>のすぐ下のmetaタグ内でcontent="text/html"; charset=iso-2022-jpとなっていました。 次にメールのソースを開いて見てみたところ、メールヘッダー部に「h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;」というのがあり、ヘッダー部の後半に「Content-Type: multipart/alternative;」があったのでマルチパートメールだと思います。ただ、次にあるプレーンテキストメールの宣言が「Content-Type: text/plain; charset="iso-2022-jp"」なのですが、2番目のHTMLメールの宣言が「Content-Type: text/plain; charset=utf-8」です。たぶんプレーンテキストで宣言されているのでソース表示になったのですかね。 また、もう1つ気づいたことがあるのですが、多くの場合に最初に来たメールは普通に受信できることが多いです。それに対してこちらから返信して、更にそれに対して相手から返信が来たメールがHTMLソースになっていることが多いです。こちらのThunderbirdの問題かもしれないです。上で書いたcharsetがisoだったりutfだったりするのも気になるので、Thunderbirdのオプション→表示→書式→詳細設定のフォント制御やテキストエンコーディングをいじりながら返信して状況が変わるか見てみているところです。 もしこの情報で何かヒントになるようなことがあれば教えていただけると助かります。 |
作成者: | 偶然的通行人 [ 2019年4月06日(土) 15:41 ] |
記事の件名: | Re: HTMLメールがソースのまま表示される |
素早い応答ができなくて申し訳ありません。 最初にお詫びです。前便ではアンダーラインが長々と付いた不自然な表現になってしまい、すみませんでした。 ソース表示のキーボードショートカットが、そのままアンダーライン用の BB コードと解釈されてしまったようです。 追加の状況説明、ありがとうございました。> godmacchi さん godmacchi さんが書きました: 次にメールのソースを開いて見てみたところ、メールヘッダー部に「h=Fromate:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;」というのがあり、ヘッダー部の後半に「Content-Type: multipart/alternative;」があったのでマルチパートメールだと思います。ただ、次にあるプレーンテキストメールの宣言が「Content-Type: text/plain; charset="iso-2022-jp"」なのですが、2番目のHTMLメールの宣言が「Content-Type: text/plain; charset=utf-8」です。たぶんプレーンテキストで宣言されているのでソース表示になったのですかね。 「たぶんプレーンテキストで宣言されているのでソース表示になったのですかね」と仰っているとおりです。 マルチパートで構成されたメール内の HTML パートの Content-Type が text/plain になっているのであれば、その部分は HTML メールとして解釈されませんから、HTML タグが生のまま表示される(=ソースのまま表示される)ことになります。 上記のお話からは、トピックタイトルにある「HTMLメールがソースのまま表示される」の直接の原因は、誤った Content-Type にあったと判断してかまわないと思います。 そしてより重要なことは、どの段階で、どんな事情があって、そのような誤った Content-Type になってしまったのか、ということでしょう。 godmacchi さんが書きました: HTMLソースで表示されるメールのソースをざっと見てみました。全部は見れていないような気がするのですが、Content-Typeを中心に見てみたところちょっと変な感じです。まず、メッセージウインドウにHTMLソースがそのまま出ているので、そこで見てみた所<head>のすぐ下のmetaタグ内でcontent="text/html"; charset=iso-2022-jpとなっていました。 簡潔さのためかなり端折った書き方をしますが...。次のようなメッセージソースがあったとします。 引用: Content-Type: text/html; charset=iso-2022-jp Content-Transfer-Encoding: 7bit <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-2022-JP"> </head> 上の2行は、電子メール自体のヘッダで、それ以下のコンテンツの内容を定義しています。 <html> 以下は、上2行で定義されたコンテンツの内容として存在する、HTML そのものの書式です。 このようなメッセージソースを持つメールを受信したとき、メールソフトはまず電子メールとしてこれから読み込むコンテンツの性質を上2行で判断します。 ここに、Content-Type: text/html; という指定があるときは、以降のコンテンツを HTML 形式のメールとして読み込もうとします。そして、<meta http-equiv="content-type" content="text/html; charset=ISO-2022-JP"> などの HTML タグを、HTML の定義に従って解釈・表示していきます。 一方、もし最初の Content-Type が text/plain になっていたら、以下のコンテンツはプレーンテキスト形式として読み込まれますから、HTML タグそのものが解釈されなくなり、単なる文字列としてそのまま(ソースのまま)表示されます。 godmacchi さんが書きました: また、もう1つ気づいたことがあるのですが、多くの場合に最初に来たメールは普通に受信できることが多いです。それに対してこちらから返信して、更にそれに対して相手から返信が来たメールがHTMLソースになっていることが多いです。こちらのThunderbirdの問題かもしれないです。 「多くの場合に」ということは、少ないながらも「最初に来たメール」でもご質問のようなソース表示になることはあるのですか。 「ある特定の人」以外の相手からのメールは、「最初に来たメール」であれ、返信であれ、ご質問のようなソース表示になることはいっさいないのですか。 godmacchi さんがご自身で作成なさる送信メールの形式は、HTML 形式ですか、プレーンテキスト形式ですか。 HTML の形式の場合は、[HTML のみ] ですか、[テキストと HTML] ですか。 返信として送られてくるメールで発生確率が高いという点にスポットを当てると、godmacchi さんが送ったメールのヘッダ構成等と、それに対して返信をする「ある特定の人」の送信設定の兼ね合いの中で、本来 text/html であるべき部分の Content-Type が間違った text/plain に置き換えられてしまうケースがある、という仮説が立てられそうです。 ただ、具体的にどのような条件のときにそんなことが起こるのかは、いまある情報だけではわかりません。返信の引用部分であれ、返信者が書いた本文であれ、普通にメールのやり取りをしていて、Content-Type が改変されるようなことは、ちょっと考え難いです。 一方、godmacchi さんがプレーンテキスト形式を基準に運用されていて、相手への送信も返信もプレーンテキスト形式でおこなっているのなら、その相手から再返信されてきた HTML メールの Content-Type は、十中八九、相手側の問題だと考えていいと思います。 godmacchi さんが書きました: 上で書いたcharsetがisoだったりutfだったりするのも気になるので、Thunderbirdのオプション→表示→書式→詳細設定のフォント制御やテキストエンコーディングをいじりながら返信して状況が変わるか見てみているところです。 charset に問題があることで発生するのは、いわゆる「文字化け」です。ソース表示になることの直接の原因にはならないと思います。 1通のメールの中に、charset の異なる複数のパートがあっても、それぞれのパートで Content-Type: text/html; charset=utf-8 Content-Type: text/plain; charset=iso-2022-jp のようなメールヘッダの指定が適切に存在すれば、どのパートも文字化けせずに表示されるのが普通です。 「HTMLメールがソースのまま表示される」の問題に関しては、Content-Type の付き方に注目してください。 ただし、実際に起こっている問題によっては、不適切な Content-Type が付いてしまうという文脈の中で、charset 指定も間違った内容になるようなケースはあるかもしれません。そのような場合、典型的には「文字化け」をともなうと思います。 時間が経っているので、すでにいろいろ試されているかと思いますが、次の諸点は試されましたか。 フォント制御やテキストエンコーディングではなく、[オプション] -> [編集] -> [一般] の右下段にある [送信テキスト形式] の内容を確認し、可能なら設定を変えて、自分宛の送信、返信、再返信を試してみてください。同じ設定は、メッセージ作成ウィンドウのメニューバーから、[オプション] -> [送信形式] でも切り替えられます。 送信や返信の前には、必ずいったん下書き保存し、そこでメッセージソースを開いて Content-Type を確認しておくと、自分から間違った内容で送信していないかどうかを確かめられるでしょう。 いくつかのパターンで自分宛に送信、返信、再返信をくり返して、HTML パートが Content-Type: text/plain; に変わってしまうケースがないのであれば、少なくとも godmacchi さんの Thunderbird に原因がある可能性はほぼ除外できるかと思います。 あとは、「ある特定の人」の環境条件と具体的なすり合わせばできればいいのですが......。 (補足) 上記は電子メールの文脈で述べましたが、前便でも触れたように、セキュリティ対策ソフトの類が干渉してメールヘッダ(Content-Type)を改変してしまうケースも実際にあります。 一度にあれもこれも点検作業はできないと思いますが、メールソフト以外の影響も念頭に置きつつ、まずは電子メールとしての基本的な点から調べてみてください。 とりあえず以上です。的外れな話だったらすみません。 (おことわり) 現在、健康上の制約により不定期な書き込みしかできなくなっています。すぐに応答できない場面がかなり多くなりますことを、ご容赦ください。 |
作成者: | godmacchi [ 2019年4月27日(土) 17:27 ] |
記事の件名: | Re: HTMLメールがソースのまま表示される |
偶然的通行人さん 返信が大変遅くなって申し訳ありませんでした。 1つ設定を変えて状況を見てというのを繰り返していたら時間がかかってしまいました。 メール相手もお客さんなので設定を細かく変えて欲しいという訳にはいかず、ウィルス対策ソフトも会社のものなので設定変更できない状況で、何とかならないかとThunderbirdの設定等を変えておりました。ご質問の送信メール形式は、HTMLとテキストです。 結局どれを変えても改善はしていない状況なのですが、Content-Typeが改変されてるのではというヒントを元に調べたところ「mailnews.display.html_as」の設定値がHTMLコードを修正するという情報がありました。(サイトのリンクを載せたらスパム認定されたので消しました) こちらを参考に設定を見てみたところ、「mailnews.display.html_as」は1で、その他にも「mailnews.display.html_sanitizer~」という項目が多くあり、どうもこのあたりの設定でThunderbirdが勝手にHTMLコードを変更しているのではないかと予想しています。どれが悪さをしているか分からないので、Thunderbirdをクリーンインストールして現在様子を見ようと思っています。発生頻度が低いので1か月くらい様子を見ようと思います。 偶然的通行人さん、色々と教えていただきありがとうございます。また結果報告します。 |
作成者: | 偶然的通行人 [ 2019年5月02日(木) 15:18 ] |
記事の件名: | Re: HTMLメールがソースのまま表示される |
素早い応答ができなくてすみません。 経過報告、ありがとうございました。> godmacchi さん 「mailnews.display.html_as」は、Thunderbird の次の設定項目のことです。 [表示] -> [メッセージの表示形式] 標準状態で表示される選択肢は、[オリジナル HTML] 、[シンプル HTML] 、[プレーンテキスト] の3つです。 対応する数値は次のようになります。 0 オリジナル HTML 1 プレーンテキスト 2 HTML ソースの表示(Display the HTML source)(*1) 3 シンプル HTML 4 すべての本文パーツ(*2) (*1)Thunderbird のユーザーインターフェイス(UI)にこの選択項目は存在せず、[高度な設定] の [設定エディター] からしか変更できません。 (*2)mailnews.display.show_all_body_parts_menu が true に変更されているとき表示され、選択可能になります。 UI からであれ、[設定エディター] からであれ、この設定を切り替えたからといってメールヘッダーの Content-Type が変更されるわけではありません。あくまで、既存のメールの内容に従って、それをどの形式で表示するかの選択肢です。 元がプレーンテキストメールなら、どれを選んでもプレーンテキストでしか表示されません。 元が HTML メールで、HTML パートとプレーンテキストパートの2つを併せ持つものなら、[オリジナル HTML] 、[シンプル HTML] 、[プレーンテキスト] の3つの選択が可能です。 [オリジナル HTML] と [シンプル HTML] の違いは、解釈する HTML タグの種類の違いです。 [オリジナル HTML] は、基本的な HTML タグをほぼすべて解釈しますが、[シンプル HTML] はより根本的な一部の HTML タグしか解釈しません。 どのタグを解釈し、どれを無視するかが、"sanitizer" の働きになります。 "sanitizer" で HTML タグの解釈に差は出てきますが、HTML のソース表示にはつながることはありえないと思います。 godmacchi さんが書きました: 2番目のHTMLメールの宣言が「Content-Type: text/plain; charset=utf-8」です。 これは明らかに Content-Type の異常であり、ご質問の現象を発生させる原因になるので、何がこの状態を生み出しているかを切り分けていくことが重要だと思います。 しかし、上述した Thunderbird の設定は、Content-Type を改変するような動作はしません。すでにある Content-Type に基づき、どう表示するかの違いだけです。 理屈上の話ですが、「メール相手もお客さん」が Thunderbird を使っていて、[設定エディター] から mailnews.display.html_as を 2 に変更しているような場合、godmacchi さんがその「お客さん」宛に送った HTML メールは、相手のところでソース表示になります。 そのまま godmacchi さん宛に返信がおこなわれると、引用部分はソース表示になると思います。しかし、その「お客さん」が書いた本文部分もソース表示になることはないように思います。 いまの時点で明らかになっている問題点は godmacchi さんが書きました: 2番目のHTMLメールの宣言が「Content-Type: text/plain; charset=utf-8」です。 だけなので、そこを重視して調査を進めたほうがいいんじゃないかと思います。mailnews.display.html_as が 2 の状態で、これが実現するのかどうか、いくつかのパターンで試しみてはいかがでしょうか。とりあえず以上です。的外れな話だったらすみません。 (おことわり) 現在、健康上の制約により不定期な書き込みしかできなくなっています。すぐに応答できない場面がかなり多くなりますことを、ご容赦ください。 |
作成者: | godmacchi [ 2020年2月19日(水) 20:24 ] |
記事の件名: | Re: HTMLメールがソースのまま表示される |
偶然的通行人さま、 だいぶ昔の投稿になってしまったのですが、紆余曲折ありまして下記の設定で上手く表示できるようになりましたので、同じく悩んでいる人のために情報共有します。 Thunderbirdの設定エディタより下記の項目を変更すると表示がうまく行くようです。過去の化けていたメールを見ても確認した限りでは全部ちゃんと読めるようになりました。 ・mailnews.display.show_all_body_parts_menu を true ・mailnews.display.html_as を 4(すべての本文パーツ) この情報が役立てば幸いです。 偶然的通行人さんには大変お世話になりました。どうもありがとうございました。 |
ページ 1 / 1 | All times are UTC + 9 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |