4 返信 最新の回答 日時: Mar 6, 2009 10:25 PM ユーザー:niki_1

    SMTPサーバーを使用して送信したメールが文字化けすることがあります

    niki_1

      概要

      SMTPサーバーを使用して送信したメールが文字化けすることがあります

      問題の内容

      ・使用中のFileMaker製品:FileMaker Pro 10.0v1・使用中のオペレーティングシステム:Mac OS X 10.4.11・問題内容の詳細送信経由をSMTPサーバーとしてメールの送信をしたとき、メールの本文中に長い行があると998バイト毎に改行が入るようです。そしてその位置に全角文字があると、メール文中の全角文字が文字化けします。・問題を再現するための操作手順1. [ファイル]-[メールを送信...]を選び、送信経由を[SMTPサーバー]とする2-a. メッセージに、全角文字333字以上を改行せずに入力し、OKボタンを押してメールを送信する2-b. メッセージに、半角文字999字以上を改行せずに入力し、OKボタンを押してメールを送信する2-c. メッセージに、半角文字998字に続けて全角文字1字以上を改行せずに入力し、OKボタンを押してメールを送信する2-d. メッセージに、半角文字997字に続けて全角文字1字以上を改行せずに入力し、OKボタンを押してメールを送信する・予想される結果2-a、2-b、2-c、2-dのどの場合でも、入力したものがそのまま受信したメール本文に現れると考えられる・実際の結果2-a:メール本文が文字化けしていて判読できず、途中に改行も入っている2-b:998文字ごとに改行されている2-c:全角文字の前で改行されている2-d:全角文字が字化けし、改行が入っている・対処方法UTF-8のエンコード後に998バイトを超える行を作らない、ということでしょうか?

        • 1. Re: SMTPサーバーを使用して送信したメールが文字化けすることがあります
          matsuo_1
            

          SMTPサーバーの実装に依存しますが、RFC 5321に従えば、メール送信に関する規格として原則1行はCRLFを含め最大1000(=998+2)バイトです。

           

          受信側のメールサーバーのことも考慮すると、受け取り側にも配慮して「エンコード後に998バイトを超える行を作らない」というのは現状では妥当だと思います。

          • 2. Re: SMTPサーバーを使用して送信したメールが文字化けすることがあります
            niki_1
              
            matsuo 様 
             
            非常に有益な情報をありがとうございました。 
             
            そうしますと、998バイト毎に改行するというのは真っ当な振る舞いであるわけですね。
            その改行を入れているのは、SMTPサーバーではなくFileMakerであるという理解でよろしいのでしょうか?
             
            Apple Mail を経由して送信すると行が細切れになってしまうので、FileMakerから直接なら切れ切れにならずに済むのではないかと思って試してみていたのですが、Apple Mail が行を切り刻んでしまうのも意味のあることではあったわけですね。
             
            懲りずに別のメールソフトからFileMakerを使わずに長文を送信して試してみたところ、SMTPサーバーによっては998バイトを超した所あたりから後の部分が文字化けするものも確かにありました。ただし改行はされないようでした。また、ちゃんと全文がその通りに届くサーバーもありました。
             
            ともあれ、何を使って送信するにしても、「エンコード後に998バイトを超える行を作らない」のがよろしいようですね。10年以上Eメールを送受信していますが、そのような制限があることを初めて認識することができました。お礼申し上げます。
             
            ところで、この掲示板から届いた、投稿があった旨のお知らせメールの、投稿のタイトルを除く全角文字(と思われる部分)が全部ものの見事に文字化けしていて、疑問符だらけの怪しい文面になっていました。なんか、とても悲しいです。
            • 3. Re: SMTPサーバーを使用して送信したメールが文字化けすることがあります
              matsuo_1
                

              改行を入れているのがSMTPサーバーであるのかFileMaker Pro 10であるのかは確認していませんが、別に好ましい振る舞いがあることを失念しておりました。失礼いたしました。

               

              もしも1行998バイトを超えるような場合には、Quoted-Printable形式(Content-transfer-encoding: quoted-printable)などでエンコードするようになってくれていれば、今回の問題は回避できるはずです。今後改善されるといいですが。

               

              (上記とは別に、FileMaker Pro 10でSMTPサーバーを利用して送信したメールのヘッダーは、「Content-type: text/plain; charset=UTF-8」であるのに、なぜ「Content-transfer-encoding: 7BIT」となっているのだろう?という疑問も出てきました。この点もやや心配です。)

              • 4. Re: SMTPサーバーを使用して送信したメールが文字化けすることがあります
                niki_1
                  

                Content-Transfer-Encoding ですが、私が試してみたときは8BITとなっていたような気がしたので受信メールを確認してみました。

                 

                やはりほとんどのものは8BITと書かれてありますが、中に数通7BITとなっているものがありました。7BITとなっていたのは、メールの本文が半角文字だけのものでした。

                 

                とりあえずご報告です。