6

我有 UTF-8 字符串:Website • Facebook
那是中间的子弹•0xE2 0x80 0xA2

此值正确存储在数据库中,并使用 Rails 3 和 ruby​​ 1.9.3 使用默认设置正确显示在屏幕上。

我正在尝试通过 HTML 电子邮件发送此邮件,但是当一切都说完后,接收端会看到垃圾:

在此处输入图像描述

这背后的代码很简单,我有一个ActionMailer子类(默认使用 UTF-8)设置以在布局中发送带有 UTF-8 内容编码的 HTML 电子邮件:

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>

内容使用与呈现网页相同的视图,重要的一行是:

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

我已经尝试了许多 , 的排列force_encodingencode将冗余的 UTF-8 编码应用于ActionMailer子类、视图文件的顶部以及大约十几个其他的东西,但似乎没有任何效果。

通过 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;博士

0xE2 0x80 0xA2
ActionMailer 正在用垃圾替换应该是 UTF-8 项目符号字符: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

检查您是否使用 gem 来内联 CSS,例如premailer-rails3.

根据这篇文章,这可能会损坏 ActionMailer 电子邮件中的 UTF-8 字符。

尝试使用 gem 之类的东西移除或替换actionmailer_inline_cssgem。

于 2012-12-19T10:09:40.440 回答