2

text/plain非ASCII文字を含むActionMailerを含む電子メールを送信しようとしています。ただし、内容が記載されたメール:

“This has smart quotes”

電子メール(およびログ)に次のように表示されます。

=E2=80=9CThis has smart quotes=E2=80=9D

そしてContent-Transfer-Encodingメールのはquoted-printableです。ビューでは、このテキストは次のようにレンダリングされます。

<%= raw(strip_tags(@message)) %>

これがどこで起こっているのかわかりませんcharset。メールのヘッダーはUTF-8です。これはRuby1.9.3-p194とRails3.2.11です。

4

1 に答える 1

4

これは少し古いことは知っていますが、実際に先週この問題に遭遇したので、他の誰かがこの質問を持っている場合に備えて、ここに調査結果を掲載します.

ActionMailer はメール gem ( https://github.com/micel/mail ) に依存します。メールは、非マルチパート メールの RFC2822 に準拠しています。RFC2822 準拠とは、US-ASCII 文字または 1 ~ 126 dec の範囲内の文字のみを許可することを意味します。したがって、mail gem はメッセージ本文をチェックして 8 ビット文字を見つけ、Content-Transfer-Encoding を quoted-printable に設定し、US-ASCII 以外の文字を 16 進数に変換します (E2 80 9C / E2 80 9D | “ / ” | 左/右の二重引用符)。ASCII 文字以外のメールを送信したい場合は、content_transfer_encoding を 8bit に設定してください。

mail = Mail.new
mail.transport_encoding = "8bit"
mail.deliver

US-ASCII 以外の文字が含まれているためにメール メッセージを拒否するメール サーバーが存在する可能性がありますが、注意が必要です。

于 2013-04-08T01:44:43.020 に答える