Cloud Solutions

Exchange Online - メールが文字化けした場合の対象方法

2022年2月10日

自分
閲覧ありがとうございます。ゆっくり よんでいってください

本記事に記載の内容は、
「Exchange Online - メールが文字化けする場合の対処法」に関する内容となっています。
ぜひ参考にしてください。

 

Outlook - メールの件名が文字化けした経緯と原因

件名が文字化けしているのに気が付いた経緯

Outlookを使用している時、なぜかメールの件名が文字化けしているの見たことありませんか・・?
数年間Exchange Online - Outlook でメールを運用していますが、この文字化けする事象が何度か発生しました。。。

何で起きるのかな~と不思議に思っていましたが、特に調査をしていなかったので
同じ悩み持っている方いるかもしれないと思い、原因と改善方法を確認しました!

 

Outlook - 文字化けの原因 ( 半角カナ文字 )

Exchange Onlineは世界中で利用されていて、
いろいろな言語に対応していることはみなさんご存じだと思います。

送受信しているメールが、どういった言語を利用しているかをExchange Online内で判別する必要があります。
この時に判定するために使用している設定は、[自動エンコード]設定のようです。
※規定値

半角カナ文字を使ったメールを送信すると、Exchange Onlineの文字コードの自動検出機能(上記 自動エンコード)により、メッセージ アイテムの内部情報である "PR_INTERNET_CPID"という属性が [50222]という値に設定されるようです。
この属性が入ることで文字化けが発生しているようです。
この属性のことは、文字コードページと呼ぶようです。

この文字化けは、上記属性が設定されたメールを返信したり転送しても、文字化けが継続して発生します。
動作を見ている限り、元のメッセージで定義された"PR_INTERNET_CPID"を参照しているようで
文字コードページの属性が書き換わる動作は発生せず、元の属性値を引き継ぐことで発生する事象のようです。

 

 

Exchange Online - メールの件名が文字化け を改善する方法

ここまで読んでいただいた方は、"PR_INTERNET_CPID"を変更すれば良いのね。と思ったと思います。
さすがです、その通りとなります。

半角カタカナを利用していないメッセージアイテムの"PR_INTERNET_CPID"を確認したところ
内部情報として[50220]という属性値が設定されていました。
こちらを、PowerShellで設定することで、文字化けを回避することが可能でした。

下記章で、"PR_INTERNET_CPID"を設定するPowerShellコマンドを記載します。

 

Exchange Online - 文字化け 解消方法 (組織全体)

本手順は組織全体に設定する方法です。

利用している中では、他言語とのやり取りに問題は発生しておりません。

  1. まずは、PowerShellを開いてExchange Onlineに接続します。
  2. 以下コマンドを実行して、"PR_INTERNET_CPID"に該当する[PreferredInternetCodePageForShiftJis]が何になっているか確認します。
    ※値が[0]になっていれば、自動エンコードになっています。
     command
    Get-OrganizationConfig |select PreferredInternetCodePageForShiftJis
    

    [PreferredInternetCodePageForShiftJis]が何になっているか確認

  3. 以下コマンドを実行して、[PreferredInternetCodePageForShiftJis]を [50220]に設定します。
     command
    Set-OrganizationConfig -PreferredInternetCodePageForShiftJis:50220
    


  4. 再度以下コマンドを実行して、[PreferredInternetCodePageForShiftJis]が設定した[50220]になっているか確認します。
    変更されていれば、設定完了です。
     command
    Get-OrganizationConfig |select PreferredInternetCodePageForShiftJis
    

    [PreferredInternetCodePageForShiftJis]が設定した[50220]になっているか確認

  5. 50220になっていれば、完了です。
    0に戻したいときは、以下コマンドを実行すれば戻ります。
     command
    Set-OrganizationConfig -PreferredInternetCodePageForShiftJis:0
    

    0に戻したいときは、以下コマンドを実行すれば戻ります。

 

Exchange Online - 文字化け 解消方法 (リモートドメイン単位)

リモートドメイン(外部ドメインが対象)での設定となり、組織全体への設定ではありません。

本手順では、規定で作成されている[]への設定となります。

利用している中では、他言語とのやり取りに問題は発生しておりません。

  1. まずは、PowerShellを開いてExchange Onlineに接続します。
  2. 以下コマンドを実行して、"PR_INTERNET_CPID"に該当する[CharacterSet]と[NonMimeCharacterSet]が何になっているか確認します。
    ※規定では、[iso-8859-1]になっているようです。
     command
    Get-RemoteDomain -Identity Default | FL *Char*,*Jis*
    

    [CharacterSet]と[NonMimeCharacterSet]が何になっているか確認

  3. 以下コマンドを実行して、"PR_INTERNET_CPID"に該当する[CharacterSet]と[NonMimeCharacterSet]を [iso-2022-jp]に変更します。
     command
    Set-RemoteDomain -Identity * -ByteEncoderTypeFor7BitCharsets 0 -CharacterSet iso-2022-jp -NonMimeCharacterSet iso-2022-jp -RequiredCharsetCoverage 90 -PreferredInternetCodePageForShiftJis 50220
    


  4. 以下コマンドを実行して、"PR_INTERNET_CPID"に該当する[CharacterSet]と[NonMimeCharacterSet]が [iso-2022-jp]に変更されたことを確認します。 変更されていれば設定完了です。
     command
    Get-RemoteDomain -Identity Default | FL *Char*,*Jis*
    

    [CharacterSet]と[NonMimeCharacterSet]が [iso-2022-jp]に変更されたことを確認

  5. 以下コマンドで元に戻ります。
    一部違う値が入るので、動作確認をしていく中で違う挙動があるかもしれないので確認が必要です。
     command
    Set-RemoteDomain -Identity * -ByteEncoderTypeFor7BitCharsets "Undefined" -CharacterSet iso-8859-1 -NonMimeCharacterSet iso-8859-1 -RequiredCharsetCoverage "" -PreferredInternetCodePageForShiftJis 0
    

    コマンドで元に戻ります。 一部違う値が入るので、動作確認をしていく中で違う挙動があるかもしれないので確認が必要

 

さいごに・・・

メール (Exchange Online / Outlook)を利用していて、文字化けメールが来ると焦りますよね・・・。
スパムメールを疑ってしまいますよね。

外部とメールをやり取りしている中で、文字化けが発生すると困ると思います。
そんな時は、本記事を参考にせって頂くと改善するしますので、ぜひお試しください。

 

-Cloud Solutions