6

私はUTF-8文字列を持っています:Website • Facebook
それは真ん中の弾丸です別名•または0xE2 0x80 0xA2

この値はデータベースに正しく保存され、Rails3を使用して画面に正しく表示されます。デフォルト設定を使用するとruby1.9.3が表示されます。

これをHTMLメールで送信しようとしていますが、すべてのことを言って完了すると、受信側にゴミが表示されます。

ここに画像の説明を入力してください

この背後にあるコードは単純ActionMailerです。レイアウトにUTF-8コンテンツエンコーディングを含むHTMLメールを送信するためのサブクラス(デフォルトではUTF-8を使用)を設定しています。

email.html.erbレイアウトファイル:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="chrome=1,IE=9" />       
    <meta charset="utf-8">
    <%= stylesheet_link_tag "application", :media => "all" %>       
</head>
<body class='email'>
    <%= yield %>                        
</body>
</html>

コンテンツは、Webページをレンダリングするのと同じビューを使用しますが、重要な行は次のとおりです。

<p><%= simple_format strip_tags(comment.text) %></p>

、の多くの順列を試しforce_encodingencode冗長なUTF-8エンコーディングをActionMailerサブクラス、ビューファイルの先頭、およびその他の約12の項目に適用しましたが、何も機能しないようです。

Apple Mailを介して生のhtmlメッセージで表示される重要なHTMLは、次のとおりです。

Website =EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD Facebook

生のメッセージ(上記のリンク)を見ると、これはテキストのみのメッセージでは発生せず、HTMLメッセージでのみ発生します。

TL; DR

ActionMailerは、UTF-8の箇条書き文字0xE2 0x80 0xA2
をガベージに置き換えています。0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD

どうすればこれを修正できますか?

4

1 に答える 1

2

のように、インライン CSS に gem を使用しているかどうかを確認しますpremailer-rails3

この投稿によると、これにより ActionMailer メールの UTF-8 文字が破損する可能性があります。

gem を削除するか、gem のようなものに置き換えてみてくださいactionmailer_inline_css

于 2012-12-19T10:09:40.440 に答える