MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

本文の最後にピリオド文字が表示される
https://forums.mozillazine.jp/viewtopic.php?f=3&t=18040
ページ 12

作成者:  koshi [ 2020年7月03日(金) 12:17 ]
記事の件名:  本文の最後にピリオド文字が表示される

Windows10
Thunderbird 68.10.0(32ビット)

SMTPのメールではメール本文の最後を示すため
半角ピリオド文字があります。

Thunderbirdで受信したメールを見ると
このピリオド文字が表示されるものがあります。
どういう場合に表示されるか不明です。

また、返信にもこのピリオド文字が付いてしまいます。

同じメールがスマホではピリオド文字が表示されません。

これは不具合なのでしょうか?

作成者:  EarlgreyTea [ 2020年7月03日(金) 16:13 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

koshi さんが書きました:
Thunderbirdで受信したメールを見ると
このピリオド文字が表示されるものがあります。
どういう場合に表示されるか不明です。

それは、特定のメール、特定の差出人の場合でしょうか。
メールのソースを表示させて調べてみてください。

作成者:  koshi [ 2020年7月03日(金) 16:59 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

EarlgreyTea さんが書きました:
それは、特定のメール、特定の差出人の場合でしょうか。
メールのソースを表示させて調べてみてください。

メールによってです。

以下のメールの場合、ピリオド文字が表示されているようです。

  Content-Type: text/plain; charset=utf-8
  Content-Transfer-Encoding: 8bit

Content-Type: text/htmlもある場合は
メッセージの表示形式をプレーンテキストにしても
ピリオド文字は表示されません。

Content-Transfer-Encoding: base64の場合
ピリオド文字は表示されません。

作成者:  EarlgreyTea [ 2020年7月03日(金) 23:39 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

koshi さんが書きました:
以下のメールの場合、ピリオド文字が表示されているようです。

  Content-Type: text/plain; charset=utf-8
  Content-Transfer-Encoding: 8bit

Content-Type: text/htmlもある場合は
メッセージの表示形式をプレーンテキストにしても
ピリオド文字は表示されません。

それは調べたメールの範囲ではたまたまそうなっていた、ということではないでしょうか。

私のThunderbirdのYahoo!メールアカウントを使って、プレーンテキストなメールを送信し受信してみましたが問題は見られませんでした。
メールソースを抜粋しますとこんな感じです。
コード:
From - Fri Jul  3 23:10:57 2020
(いろいろ削除)
To: (削除)
From: (削除)
Subject: =?UTF-8?B?44OX44Os44O844Oz44OG44Kt44K544OI44GnVVRGLTjjgarjg6Hjg7w=?=
 =?UTF-8?B?44Or44Gu44OG44K544OI?=
Message-ID: (削除)
Date: Fri, 3 Jul 2020 23:10:45 +0900
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101
 Thunderbird/68.10.0
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 8bit
Content-Length: 57

プレーンテキストでUTF-8なメールのテスト

受信トレイのすべてのメールソースで「Content-Type: text/plain; charset=utf-8」を検索して、そのメールすべてで同じ状況でしょうか。
たぶん特定の差出人、特定のメールサーバー、特定のメールソフトなどのどれかなのではないでしょうか。

該当メールアカウントの設定>サーバー設定>メッセージの保存先
に設定されているフォルダーをエクスプローラーで開いていただいて、そこに Inbox というファイルがあるはずです。
それを安全のためいったん別の場所にコピーしていただいて、そのコピーしたファイルをテキストエディター(できればメモ帳より便利なもので)で開いて見てください。
そして検索機能を使って「Content-Type: text/plain; charset=utf-8」を検索して確認をお願いします。

作成者:  koshi [ 2020年7月04日(土) 02:39 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

EarlgreyTea様

プレーンテキストのみのメールが少なく
調査に時間がかかり、確証が得られていません。

EarlgreyTea様のテストで一つ確認したいことがございます。
Thunderbirdで受信メールをファイル保存(xxxx.eml)します。
このファイルをテキストエディターで開くと
最後にピリオドはありますでしょうか?

作成者:  EarlgreyTea [ 2020年7月04日(土) 06:37 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

koshi さんが書きました:
最後にピリオドはありますでしょうか?

本文にピリオドを打ったのでなければ、ありません。
環境:
  • Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0
アカウント:
  • Gmail(IMAP)
  • Yahoo!メール(POP)
  • Outlook.com(IMAP)
  • Zoho Mail(IMAP)
です。

ところで気になっていることがあるのですが、
koshi さんが書きました:
SMTPのメールではメール本文の最後を示すため
半角ピリオド文字があります。
こちらは何を指してそういっているのでしょう。

最後を示すピリオドですが、これは正確には、
SMTPにおけるDATAコマンドの終わりは「<CRLF>.<CRLF>」で示されるということです。
ちなみに、メール中に「<CRLF>.<CRLF>」が含まれていた場合に区別がつかなくなりますので、行頭にピリオドがあったら送信側ではもう一つピリオドを追加し、 受信側では行頭のピリオドを一つ削除する、ということを行います。
参考: https://www.softel.co.jp/blogs/tech/archives/2277

こういったことは、SMTPサーバーにtelnetで入って、直にコマンドを打っているとかでなければ意識する場面はないはずです。

作成者:  koshi [ 2020年7月04日(土) 10:39 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

EarlgreyTea さんが書きました:
本文にピリオドを打ったのでなければ、ありません。
普通そうですよね。
ところが受信したすべてのメールの最後に
「<CRLF>.<CRLF>」がついたままになっています。

アカウント:
  • outlook.office365.com(POP)

本来であれば、存在しない「<CRLF>.<CRLF>」があり
表示されているようです。

Content-Type: text/htmlや
Content-Transfer-Encoding: base64の場合
本文の終わりが明確なので、本文以降の文字として無視され
表示されないようです。

昨年メールサーバーをIIJからoutlook.office365に変えたのですが
IIJ時に受信したメールには「<CRLF>.<CRLF>」はついていませんでした。

outlook.office365の仕様なのか設定なのか
それともThunderbird上の設定なのか
わかれば教えてほしいです。

作成者:  EarlgreyTea [ 2020年7月04日(土) 17:21 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

koshi さんが書きました:
ところが受信したすべてのメールの最後に
「<CRLF>.<CRLF>」がついたままになっています。

特定の差出人や特定のメールソフトで送信されたメールではなく、すべてのメールなのですね?
そうすると、ご利用メールサービス由来の挙動の可能性が高いと思われます。

koshi さんが書きました:
outlook.office365.com(POP)

私は無料の Outlook.com (hotmail) を利用していますが、サーバーは同じです。
koshi さんご利用のメールサービスは、有料の Office365 でしょうか。
夜に帰宅したら、一応 POPのアカウントを作成して試してみることにします。

作成者:  koshi [ 2020年7月04日(土) 19:28 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

有料です。

Thunderbirdを疑ってしまいましたが
メールサービスの問題かもしれませんね。

会社のなので
週明けに確認してみます。

作成者:  EarlgreyTea [ 2020年7月05日(日) 00:28 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

試してみました。
outlook.office365.com から POPでメールをダウンロードすると、終端のピリオドがメールソースに含まれていました。
これは IMAPでは起こりません。
詳細は後で調べてみようと思いますが、取り急ぎ結果だけお知らせしました。

作成者:  EarlgreyTea [ 2020年7月05日(日) 13:03 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

POP受信した際の動作ログを出力させて調べてみました。
方法は下記で、モジュール指定は「timestamp,POP3:5」としました。

outlook.office365.com と比較対象として pop.zoho.com から
同じプレーンテキストのメール本文
コード:
.
..
...
を受信した際のログを取得したところ、以下となりました。

outlook.office365.com
コード:
2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV:

2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: ..

2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: ...

2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: ....

2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: (null)
2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] Entering NET_ProcessPop3 3
2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] Entering state: 19
2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: .

2020-07-05 03:05:51.826000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: (null)
2020-07-05 03:05:51.841000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] Entering state: 15
2020-07-05 03:05:51.841000 UTC - [(null) 18696: Main Thread]: D/POP3 sink: [this=2CA3FD30] Calling ReleaseFolderLock from EndMailDelivery
2020-07-05 03:05:51.841000 UTC - [(null) 18696: Main Thread]: D/POP3 sink: [this=2CA3FD30] ReleaseFolderLock haveSemaphore = TRUE
2020-07-05 03:05:51.857000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] Entering state: 22
2020-07-05 03:05:51.857000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] SEND: QUIT

pop.zoho.com
コード:
2020-07-05 03:05:29.739000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV:

2020-07-05 03:05:29.739000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: ..

2020-07-05 03:05:29.739000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: ...

2020-07-05 03:05:29.739000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: ....

2020-07-05 03:05:29.739000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: .

2020-07-05 03:05:29.792000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] RECV: (null)
2020-07-05 03:05:29.792000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] Entering state: 15
2020-07-05 03:05:29.855000 UTC - [(null) 18696: Main Thread]: D/POP3 sink: [this=11C731F0] Calling ReleaseFolderLock from EndMailDelivery
2020-07-05 03:05:29.855000 UTC - [(null) 18696: Main Thread]: D/POP3 sink: [this=11C731F0] ReleaseFolderLock haveSemaphore = TRUE
2020-07-05 03:05:29.877000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] Entering state: 22
2020-07-05 03:05:29.877000 UTC - [(null) 18696: Main Thread]: I/POP3 [this=05010D60] SEND: QUIT

本来、メール本文と終端のピリオドまで続けて受信した後に(null)となるはずが、outlook.office365.com の場合は、メール本文最後と終端のピリオドの間にも(null)を受信してしまっていることに注目してください。
この outlook.office365.com がPOP3のRETRコマンドの応答を返してくる際の挙動の違い、これが最初の原因です。

そして、その際になぜか Thunderbird は終端のピリオドを受信メッセージに追記してしまっている、ように見受けられます。
これが他のメールソフトで現象が発生しない原因ということになるでしょう。

したがいまして、outlook.office365.com のPOPゲートと Thunderbird どちらもおかしい、というのが私の結論です。
outlook.office365.com は素直にIMAPで利用されることをおすすめします。

作成者:  EarlgreyTea [ 2020年7月05日(日) 19:30 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

バグ報告してみました。
Bug 1650626 A dot is added to the end of messages received from outlook.office365.com using POP

作成者:  koshi [ 2020年7月05日(日) 20:49 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

EarlgreyTeaさん

解析ありがとうございます。
すごいですね。

メール本文最後と終端のピリオドの間にも(null)があるなんて
C言語での処理に便利そう(逆にC言語で1バイト多く処理してしまってる?)

昨年のメールサーバ変更時にIMAPをすすめられたのですが
IIJ上で容量大きいためかIMAPでの接続に失敗しまして
受信フォルダとかそのまま使いたかったので
POPのままoutlook.office365.comに移行していました。

そんなわけで、この組み合わせで使用してるのが私ぐらいで
なおかつ、プレーンテキストでbase64などの変換かかっていない場合のみ
見える現象なので、本当にレアですね。

実際、昨年から発生していたのですが
ピリオドに何の違和感もありませんでした。

とにかくスッキリしました。
ありがとうございました。

IMAPへの移行検討します。

作成者:  koshi [ 2020年7月05日(日) 20:59 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

EarlgreyTea さんが書きました:
これが他のメールソフトで現象が発生しない原因ということになるでしょう。
申し訳ありません。他のメールソフトでは確認できていません。
スマホにも配信されたメールにピリオドが無かったということです。

作成者:  EarlgreyTea [ 2020年7月05日(日) 22:00 ]
記事の件名:  Re: 本文の最後にピリオド文字が表示される

koshi さんが書きました:
メール本文最後と終端のピリオドの間にも(null)があるなんて
C言語での処理に便利そう(逆にC言語で1バイト多く処理してしまってる?)

あれはあくまでログの表示であって、生データにnullポインターやNUL文字が入っているわけではありません。
実際のソースコードは見ていませんが、1行(<CRLF>で区切られた)データを受信する関数が返値としてnullポインターを返したというのを出力しているだけかと。
生データの該当箇所で<CRLF>が連続して長さ0の空行になっているのか、それともいったん途切れてしまっているのか、それは私にはわかりません。
あと、C言語じゃなくて主にC++です。あとRustとかJavaScriptとか…

koshi さんが書きました:
申し訳ありません。他のメールソフトでは確認できていません。

バグ報告の前に私が確認してます。
Windows 10標準のメールアプリ、Sylpheed、Becky! です。

koshi さんが書きました:
スマホにも配信されたメールにピリオドが無かったということです。

普通に設定したらIMAPのはずです。

ページ 12 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/