HTML形式のメール本文の一部がOutlookでのみ表示されない現象


HTML 形式のメールを Outlook と他のメールソフトの間でやり取りしている際、まれに他のメールソフトでは表示される文字列が Outlook では表示されないという現象が発生することがあります。
また、この現象が発生したメールを Outlook で [アクション]-[ブラウザーで表示] により Internet Explorer などで表示を行うと、本文が正しく表示されるようになります。

こうなってくると、Outlook の不具合のように見えますが、実は Word のちょっと残念な仕様によるものです。
何故ここで Word が出てくるのかというと、すでに何度かこのブログでも取り上げている通り、Outlook が Outlook 2007 からメールの表示と編集の両方に Word のコンポーネントを使用するようになっているためです。
そして、Word では HTML メールに Word 固有のスタイルを使用するため、HTML ソースにちょっと特殊な HTML タグを埋め込みます。
たとえば、HTML 本文中に図形を重ねて挿入した場合、受信側が Outlook 以外のメールクライアントの場合、重なった図形は一つの画像となっており、分離することはできません。
しかし、Outlook (Word) でその HTML メールに返信や転送を行う際には、引用部分の図形も送信側と同様に重なり合った図形がそれぞれ個別に編集可能な状態となります。
このように、Outlook 同士でメールをやり取りしている間は非常に便利な機能なのですが、他のメールソフトとやり取りし始めると問題が生じてきます。

というのも、Word では固有のタグと同時に他のメールソフトで表示を行うための代替文字列や画像を挿入しているのですが、他のメールソフトによりWordで生成されたHTMLソース部分にインラインで文字列を追加した際、Wordでは表示されないタグの中に文字列が追加されてしまうことがあるためです。
たとえば、丸付き数字でリストを作った場合、HTML ソースは以下のようになります。

<p class=MsoListParagraph style='margin-left:18.0pt;mso-para-margin-left:0gd;
text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US style='mso-fareast-font-family:Century;mso-fareast-theme-font:minor-latin;
mso-bidi-font-family:Century;mso-bidi-theme-font:minor-latin'><span
style='mso-list:Ignore'>①<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-family:"MS ゴシック",serif;
mso-ascii-font-family:Century;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
"MS ゴシック";mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Century;
mso-hansi-theme-font:minor-latin'>項目1</span></p>

ちょっと長いですが、ここで問題になるのは <![if !supportLists]>mso-list:Ignore というタグです。
<![if !supportLists]> はリスト表示をサポートしていない場合にのみ表示を行うという意味であり、mso-list:Ignore はリスト表示において表示を行わないという意味です。
これらはいずれも Word 以外では意味をなさないタグであるため、他のメールソフトでは「①」が表示されます。
一方、Word はこのタグを番号付きリストとして解釈し、「①」自体は表示しません。
ただし、mso-list:l0 level1 lfo1 という指定により、HTML ソースの先頭部分で定義された番号付きリストとしての表示を行うため、結果的に「①」が表示されることになります。

ところが、Outlook 以外のメールソフトはそのような指定は解釈できないので、①の前後に文字列を追加すると、上記ソースの Word が表示を行わない部分に文字列が追加されることがあります。
そのようなメールを受信すると Outlook では本文の一部が表示されない状態になるのです。
つまり、この現象は返信や転送のメールの際に、Outlook以外のメールソフトで元のメールにインラインで書き込みを行った場合に発生するということです。

この現象を防ぐ方法には以下のようなものがあります。

1. HTML メールを使用しない。

最も確実な方法は、HTML メールを使用しないというものになります。
最近では HTML メールも当たり前になりつつありますが、以前は HTML メールはセキュリティ上の問題があるという話があり、敬遠されていました。
現在でも一部の企業では HTML メールをテキスト形式として表示するという設定を強制しているところもあります。
実際のところメールを HTML 形式で送らなければいけないという状況はそうそうあるものではないため、基本的にはテキスト形式で送信するほうがよいでしょう。
また、どうしても文字の色を変えたり画像を埋め込んだりしたいときには、リッチテキスト形式にして送信するという手もあります。
リッチテキスト形式で送信すると受信側で添付ファイルが WINMAIL.DAT になるという問題が生じやすくなりますが、以前このブログでも紹介した対処方法を行うことでこの問題は防ぐことができます。
そして、この場合にはリッチテキスト形式が Outlook や Exchange の機能により HTML 形式に変換され、この際には Word 固有のタグなどが使用されないため、問題が発生しません。

2. Outlook でリストを使用しない。

この問題が最も発生しやすいのは前述のリスト表示のタグによるものです。
そのため、Outlook でメールを作成する際にはリストのスタイルを使用しないようにすることで、この問題はほぼ防げると考えられます。
ただ、入力オート フォーマットの機能により、自動的にリストのスタイルに変更される場合もありますので、この対処方法をとる場合は入力オート フォーマットの [箇条書き (行頭文字)] と [箇条書き (段落番号)] をオフにした方が良いでしょう。
個人的には [序数 (1st, 2nd, 3rd, …) を上付き文字に変更する] と [ハイフンをダッシュに変更する] も文字化けの原因となるのでオフにした方が良いと思います。

3. メールの返信や転送で引用部分に文字列を追記しない。

これは、Outlook 以外のメールソフトを使っていて相手が Outlook を使用している場合なのですが、メールの返信や転送で引用部分にインラインで書き込むというのは避けた方が無難です。

広告

HTML形式のメール本文の一部がOutlookでのみ表示されない現象」への6件のフィードバック

  1. 初めまして。ここにコメントしていいのかどうかわかりませんが、不適切でしたらお詫びいたします。

    実は、お書きになった「HTML形式のメール本文の一部がOutlookでのみ表示されない現象」が起きました。
    私はメールの受信者で、Outlook 2010をWindow 8.1で利用しています。
    つたない私の知識では今ひとつわからないのですが(コンピュータの扱いに疎いです)、
    こちらには、送信者が気をつけるべきことは書かれているものの、
    受信者として現象を防ぐ方法が見当たらないように思います。
    受信者として、何かできることはないものでしょうか?
    大変お手数をおかけいたしますが、中学生にもわかるような平易なご説明をいただけると助かります。

    今回、たまたま送信者とやりとりをしていて、この現象に気づいたのですが、
    Outlook上に相手が送ってくれた情報が表示されなかったがために、仕事のアポイントを1つ逃してしまいました。
    なお、マイクロソフトの無料サポートでは解決せず、
    こういう現象があることもご存知なかったようです。
    以上、よろしくお願いします。

    • この問題は返信メールで発生するので、メールを作成する際にできるだけ HTML を使わなければ発生する可能性は低いと言えます。
      また、すべてのメールをテキストで表示するようにしておけば、この問題を受信者側で回避することができると考えられます。

  2. ご丁寧にご提案をありがとうございます。

    ただ、せっかくですが、今回のメールの送信者は、私がリッチテキストなどで送ってもHTMLで返信してきます。そういう人は多いですよね。取引先なので強くは言えませんし、もちろん、相手にもやりやすいやり方があるでしょうし徹底まではほど遠いです。ちなみに、今回のメールは新規の案件でした(実際には送信者側で「返信」をクリックして過去の本文を削除したうえで今回の本文を書いた可能性はありますが)。

    また、「すべてのメールをテキストで表示するようにしてお」くというのは、あらかじめテキストで受信するようにするという意味ですよね。そういうことができるんですね。ただし、そういう設定にしてしまうと、今回の問題は回避できても、今度は別のHTMLならではの表示やリッチテキストならではの表示が活かされないわけですよね?(例えば送信者がフォントや色を変えた部分が表示されないなど)

    いろいろなクライアントが、いろいろなメールを送ってくるので、難しいところです。マイクロソフトのコミュニティでも今のところ名案が出ていません。

  3. HTML形式に設定しメール文を記載した場合、まれにではなく、100%表示されません。仕様ではなく、考慮不足のバグだと思います。非常に迷惑です。送信済みメールでも文字が削除されており危険です。早期に改善して下さい。

      • こちらのブログは個人で作成しているブログであり、マイクロソフト社の公式ブログではありません。
        マイクロソフト社へのご要望は、マイクロソフト社が用意しているフォーラムやサポート窓口までお願いします。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中