locked
エンコード quoted-printable について RRS feed

  • 質問

  • Exchange2007に変更してからいろいろと問題が噴出中の林です。
    その中でも一番解せないのが件名のエンコード方式"quoted-printable"です。
    Exchange2007の日本語エンコードは"quoted-printable"だけとなりその他は今後も対応しないという回答がMSサポートからありました。

     

    <<回答の一部抜粋>>

    quoted-printable を使用した場合、自動改行を行う場合に改行コードの直前に = を入力することで、それがデコードの際に削除されるべき改行であることを受信者側に伝えることができます。そのため、受信者側では、iso-2022-jp の文字シーケンスの途中に挿入された自動改行を削除することが可能となりますので、受信したメッセージを正しく表示できるようになります。

     

    この問題が確認できたのが、Exchange 2003 がリリースされた後になりますので、Exchange 2000 と 2003 では修正プログラムとレジストリの設定により quoted-printable で送付できるようになっておりますが、Exchange 2007 ではこの問題が確認できておりましたので、quoted-printable で送付するようになっております。また、大変恐れ入りますが、Exchange 2007 にて quoted-printable 以外で送付できることは現状困難であり、動作の修正については予定されていないことをご了承いただけますようお願いいたします。

    これは仕様なのだそうです。

     

    メールが今までと同様に送信できればまぁいいかなと思うのかもしれませんが、わりとquoted-printable のエンコードに対応していないメールサーバーなんかも多いんですよね。

     

    たとえば、ウィルコムのエアーエッジ。これは本文が100%化けます。うちの会社ではウィルコム製PHSが標準でかなりの台数があります。現在どうするか検討中です。(苦笑)

    さらにMSの製品を論議するPASSJのSQL-ServerのMLに投稿しようとしたらquoted-printableなエンコードは受け付けないという リターンメールで投稿できずでした。(さらに苦笑)

     

    はたしてこのquoted-printableなエンコード。仕様とおりです。で済ませていいんでしょうか?2000でも2003でもこんな現象なかったんですよ。

     

    みなさんのご意見お聞かせください。

    2007年5月9日 5:48

回答

  • quoted-printable だけの対応については、ものすごく違和感を感じます。

    いまだに quoted-printable だと文字化けするクライアントやリレーサーバが多数存在するのに、仕様と打ち切るのはいかがなものでしょうか?

    Exchange 4.0 か 5.0 のころからこの問題があって、HotFix や Service Pack の適用で Base64 をサポートしてきたものを Exchange 2007 で打ち切りとは少々荒っぽいと思います。

    私は .NET Framework 2.0 の System.Net.Mail/System.Net.Mime を使って Base64 エンコードして送る方法を探し出して、さらに Content-Transfer-Encoding: sevenbit とになるというケアレスミスのバグを発見して、MS に DCR を投げて修正してもらっています。

    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=264603&SiteID=7

     

    日本ではまだまだ quoted-printable だけじゃ解決しないことがあるので、オプションでよいので設定変更で Base64 のサポートをしてほしいものです。

    1 MVP として強く要望します。

    2007年5月9日 7:20
  • 各国の事情というのがあるというメールの現状の中で1つの仕様で全世界向けにメールを発信するわけにはいかないのです。

    私も今までもSMTPやPOPの実装を行っていたり、利用していますが少なくとも日本の事情を完全に無視したこの仕様では日本のビジネス事情に合いません。

     

    携帯電話だけでも9671万台(電気通信事業者協会の平成19年3月)ありますが、はたしてquoted-printable形式を解釈できるのでしょうか?

     

    書かれているウィルコムだけでも450万台以上あるわけです。

     

    PC用のメールクライアントであればサポートしている比率も高いかもしれませんが、Outlook や Windows Mailで読めるからそれでOKとはならないと思います。(インターネット人口は8529万人とか平成18年版 情報通信白書)

     

    現時点、そしてそう近くない未来までもBase64メールの対応を強くお願いしたいです。

    2007年5月9日 7:56
  • 菊池です

     

     日本ローカルの問題ではなく、自動改行に関わる他のメーラーとの互換性問題

    もあります。

     

    quoted-printable を使用した場合、自動改行を行う場合に改行コードの直前に = を入力することで、それがデコードの際に削除されるべき改行であることを受信者側に伝えることができます。

     

     そもそも = で改行を消すのはQuated Printableのエスケープの悪用ですよね。

     

     自動改行とそれに関する処理は RFC3676で規定されておりこれが現状の

    Standard Trackだと思いますがこのスペック上では 空白文字+改行が自動改行

    による軟改行となっています。そこにはエンコード方式等は関係ありません。

     

     また、RFC-3676には以下の記載があります。

     

       [Quoted-Printable] encoding SHOULD NOT be used with Format=Flowed
       unless absolutely necessary (for example, non-US-ASCII (8-bit)
       characters over a strictly 7-bit transport such as unextended
       [SMTP]).  In particular, a message SHOULD NOT be encoded in Quoted-
       Printable for the sole purpose of protecting the trailing space on
       flowed lines unless the body part is cryptographically signed or
       encrypted (see Section 4.6).

     (RFC 3676による)自動改行を行い Quoted-Printable を使うのは 未拡張

    の7bit SMTPなどトランスポートがどうにもならない場合に限るべきとなってい

    ます。

     そして、メッセージが暗号化もしくは暗号による署名をされている場合には

     Quoted-Printable は使うべきではないともなっています。(RFC 3676による

    改行制御を行ったメッセージの署名が検証できなくなる可能性がある)

     

     RFC 3676による(他メーラとも互換性の取れる)まっとうな自動改行処理の

    ためにQPができなくなった方が当然であると自分は思いますがQPのエスケープ

    の悪用による独自仕様の自動改行制御のためにBase64エンコードができ

    ないというのは本末転倒もはなはだしい話と思います。

    2007年5月9日 8:41
  • これは逆にShiftJISなんかでメールを送ること自体ナンセンスなので、論外としていいと思います。

    #エンコードを指定しているのにそのエンコードをうまく扱えていないのはまた問題なんですが。

    ##System.Net.Mailの実装は明らかに問題が多いので、実業務では利用できないと判断して独自実装しましたが

     

     

    2007年5月10日 15:17
  • こんにちは。

     

    私もExchange 2007になってquoted-printable になったことに気付いていたのですが、

    今日ウイルコムのPHSにメールして、文字化けして読めないと苦情をもらってはじめてたいへんなことだと気付きました。

     

    ウイルコムのW-ZERO3シリーズとExchangeとの同期機能はすばらしいと思うのですが、

    W-ZERO3端末そのもののpdx.ne.jpにメールすると文字化けしてしまうなんて、困りものですね。

    ぜひともExchange側での対応をお願いしたいものです。

    2007年7月9日 9:28
  • この件で、2007年12月にウィルコム社は対応を行いました。

     

    こちらで使用しているPHSも、文字化けしなくなりました。

     

    その他のテストではSoftBank、Docomo、AUの携帯電話に関しては問題は発生しませんでした。

     

     

    2008年1月18日 9:51
  • Exchange 2007 SP1 で何やら変わったとの記述があります

    http://support.microsoft.com/kb/946641/en-us

    2008年1月24日 8:15

すべての返信

  • quoted-printable だけの対応については、ものすごく違和感を感じます。

    いまだに quoted-printable だと文字化けするクライアントやリレーサーバが多数存在するのに、仕様と打ち切るのはいかがなものでしょうか?

    Exchange 4.0 か 5.0 のころからこの問題があって、HotFix や Service Pack の適用で Base64 をサポートしてきたものを Exchange 2007 で打ち切りとは少々荒っぽいと思います。

    私は .NET Framework 2.0 の System.Net.Mail/System.Net.Mime を使って Base64 エンコードして送る方法を探し出して、さらに Content-Transfer-Encoding: sevenbit とになるというケアレスミスのバグを発見して、MS に DCR を投げて修正してもらっています。

    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=264603&SiteID=7

     

    日本ではまだまだ quoted-printable だけじゃ解決しないことがあるので、オプションでよいので設定変更で Base64 のサポートをしてほしいものです。

    1 MVP として強く要望します。

    2007年5月9日 7:20
  • 各国の事情というのがあるというメールの現状の中で1つの仕様で全世界向けにメールを発信するわけにはいかないのです。

    私も今までもSMTPやPOPの実装を行っていたり、利用していますが少なくとも日本の事情を完全に無視したこの仕様では日本のビジネス事情に合いません。

     

    携帯電話だけでも9671万台(電気通信事業者協会の平成19年3月)ありますが、はたしてquoted-printable形式を解釈できるのでしょうか?

     

    書かれているウィルコムだけでも450万台以上あるわけです。

     

    PC用のメールクライアントであればサポートしている比率も高いかもしれませんが、Outlook や Windows Mailで読めるからそれでOKとはならないと思います。(インターネット人口は8529万人とか平成18年版 情報通信白書)

     

    現時点、そしてそう近くない未来までもBase64メールの対応を強くお願いしたいです。

    2007年5月9日 7:56
  • 菊池です

     

     日本ローカルの問題ではなく、自動改行に関わる他のメーラーとの互換性問題

    もあります。

     

    quoted-printable を使用した場合、自動改行を行う場合に改行コードの直前に = を入力することで、それがデコードの際に削除されるべき改行であることを受信者側に伝えることができます。

     

     そもそも = で改行を消すのはQuated Printableのエスケープの悪用ですよね。

     

     自動改行とそれに関する処理は RFC3676で規定されておりこれが現状の

    Standard Trackだと思いますがこのスペック上では 空白文字+改行が自動改行

    による軟改行となっています。そこにはエンコード方式等は関係ありません。

     

     また、RFC-3676には以下の記載があります。

     

       [Quoted-Printable] encoding SHOULD NOT be used with Format=Flowed
       unless absolutely necessary (for example, non-US-ASCII (8-bit)
       characters over a strictly 7-bit transport such as unextended
       [SMTP]).  In particular, a message SHOULD NOT be encoded in Quoted-
       Printable for the sole purpose of protecting the trailing space on
       flowed lines unless the body part is cryptographically signed or
       encrypted (see Section 4.6).

     (RFC 3676による)自動改行を行い Quoted-Printable を使うのは 未拡張

    の7bit SMTPなどトランスポートがどうにもならない場合に限るべきとなってい

    ます。

     そして、メッセージが暗号化もしくは暗号による署名をされている場合には

     Quoted-Printable は使うべきではないともなっています。(RFC 3676による

    改行制御を行ったメッセージの署名が検証できなくなる可能性がある)

     

     RFC 3676による(他メーラとも互換性の取れる)まっとうな自動改行処理の

    ためにQPができなくなった方が当然であると自分は思いますがQPのエスケープ

    の悪用による独自仕様の自動改行制御のためにBase64エンコードができ

    ないというのは本末転倒もはなはだしい話と思います。

    2007年5月9日 8:41
  • 林です。

     

    MVPの方々からいろんな意見を頂戴して恐縮です。

     

    エンコードではまった現象をついでにひとつ。

     

    Exchange2007に変更してから本文が化けているスパムメールが多くなったなぁと思っていたのでMSに調査を依頼しました。(まったく同じスパムメールがExchange2003では化けていなかったので)

    送信元が特定できないと調査が難しいということになって行きづまっていたのですが、協力会社から届いたメールも文字化けしていることが判明。

    確認してもらうと.Netから送信したとのこと。

    確認のためExchange2003のほうへまったく同じメールを送信してもらうとまったく化けません・・・。

     

    MSにサンプルコードと一緒にこの旨を伝え、調査してわかったことは下記のとおりです。

     

    <<回答抜粋>>

    お問い合わせいただきました現象につきまして、送付したメッセージを確認させていただいたところ、本文が Shift_JIS でエンコードされているにも関わらず、charset が iso-2022-jp となっており、本文のエンコードと charset のエンコード指定が異なっているために、Exchange 2007 で受信したメッセージが正しく表示されておりませんでした。そこで、送信元を確認していただいたところ、.net のプログラムからメッセージを送付したときに、GetEncoding を使用して本文を Shift_JIS でエンコードしているにも関わらず、charaset が shift_jis ではなく iso-2022-jp が指定されていることが原因となっていることを確認いただきました。

     

    .Netの不具合だということで決着したのですが、これもExchange2003で文字化けしないので、なんだかなぁ~なんですよ。

     

    スパムメールで文字化けしているのってみんな.Netで送信してるんでしょうね。

    大量に送信しなきゃならんってことでプログラム書いてるんでしょうが、変に納得させられちゃいました。(笑)

     

    参考のためサンプルつけときます。


    Imports System.Net.Mail


        Private Function SendMail() As Boolean
            Dim message As New MailMessage

            Try
                mailBody = mailBody & "得意先名称 御中" & ControlChars.CrLf

                ' メッセージを作成する。
                With message
                    .Subject = "メールテスト"
                    .SubjectEncoding = System.Text.Encoding.GetEncoding("shift_jis")
                    .BodyEncoding = System.Text.Encoding.GetEncoding("shift_jis")
                    .IsBodyHtml = False
                    .Priority = Net.Mail.MailPriority.Normal
                    .Body = mailBody
                    .From = New MailAddress("aaa@aaa.aaa", ""メールアドレス", System.Text.Encoding.GetEncoding("shift_jis"))
                    .To.Add(New MailAddress("aaa@aaa.aaa", ""メールアドレス", System.Text.Encoding.GetEncoding("shift_jis")))
                End With

                ' SMTPサーバを指定する。
                client = New SmtpClient("xxx.xxx.xxx")
                ' メールを送信する。
                client.Send(message)

                MsgBox("送信完了")
                Return True

            Catch ex As SmtpException
                MsgBox(ex)
                Return False
            Finally
                message.Dispose()
            End Try

        End Function

    2007年5月10日 8:19
  • これは逆にShiftJISなんかでメールを送ること自体ナンセンスなので、論外としていいと思います。

    #エンコードを指定しているのにそのエンコードをうまく扱えていないのはまた問題なんですが。

    ##System.Net.Mailの実装は明らかに問題が多いので、実業務では利用できないと判断して独自実装しましたが

     

     

    2007年5月10日 15:17
  • 中さん

     

    シフトJISがナンセンスだというのは私にもわかるのですが、エンドユーザーから見た場合には2007の不具合に見えてしまうんですよね。

    「Exchange2003までは正常に表示できていたのにExchange2007になると文字化けする。」これだけの事実をみるとユーザーには不具合にしか見えないんです。

     

    実際のところ、スパムメールでしかこの文字化けを起こしていないのでユーザーに「スパムメールだからです。」って説明できますけどね。

     

    2007年5月14日 23:25
  • こんにちは。

     

    私もExchange 2007になってquoted-printable になったことに気付いていたのですが、

    今日ウイルコムのPHSにメールして、文字化けして読めないと苦情をもらってはじめてたいへんなことだと気付きました。

     

    ウイルコムのW-ZERO3シリーズとExchangeとの同期機能はすばらしいと思うのですが、

    W-ZERO3端末そのもののpdx.ne.jpにメールすると文字化けしてしまうなんて、困りものですね。

    ぜひともExchange側での対応をお願いしたいものです。

    2007年7月9日 9:28
  • 結局、弊社ではウィルコム端末を解約することになりました・・・・。

    メールが化けるのでは使い物にならないという判断で、IPの内線化が可能なau端末に変更となりました。

     

    はぁ~~(ーー;

     

    そんな状態なのに、Exchangeの分科会から案内がきました。

     

    ●モバイルソリューションのご紹介

        株式会社ウィルコム
       Windows Mobile端末 “Advanced/W-ZERO3esのご紹介
     

    思わず突っ込みたくなりました!

    先に「quoted-printable」の問題を解決してから紹介せんかい!!・・・と(苦笑)
    2007年8月23日 23:39
  • この件で、2007年12月にウィルコム社は対応を行いました。

     

    こちらで使用しているPHSも、文字化けしなくなりました。

     

    その他のテストではSoftBank、Docomo、AUの携帯電話に関しては問題は発生しませんでした。

     

     

    2008年1月18日 9:51
  • Exchange 2007 SP1 で何やら変わったとの記述があります

    http://support.microsoft.com/kb/946641/en-us

    2008年1月24日 8:15
  • みなさんこんにちは。森田 知良です。

     

    投稿してくださったみなさん、さまざまな情報をありがとうございました。

     

    ninjinさん、フォーラムのご利用ありがとうございます。
    投稿してくださったみなさんの情報は、有用な情報と思われましたので、
    勝手ながら回答済みチェックをつけさせていただきました。
    ninjinさんは、回答済みチェックを解除することもできますのでご確認ください。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有効な回答があった場合は、なるべく回答済みボタンを押してチェックを付けてくださるようお願いします。

     

    それでは、これからもフォーラムのご利用をよろしくお願いいたします。

    2008年4月30日 6:45