8

“Content-Transfer-Encoding”设置默认设置为“7bit”。邮件服务器 Postfix 将电子邮件标题分解为 1000 个字符,这意味着如果您的电子邮件很长(例如使用 HTML),您最终会在文本或链接中间有空格。(有关更多信息,请参阅此线程:http: //tech.groups.yahoo.com/group/postfix-users/message/273296

按照 Rails ActionMailer 文档 (http://api.rubyonrails.org/classes/ActionMailer/Base.html),将以下代码添加到我的应用程序文件中应该可以,但它不起作用:

ActionMailer::Base.default 'Content-Transfer-Encoding' => 'quoted-printable'

我仍然以默认值结束:

Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_50166adf1e043_1b9810829142282d";
 charset=UTF-8
Content-Transfer-Encoding: 7bit

我的电子邮件是这样的:

def new_registered_user(user_id) 
    @user = User.find(user_id)

    set_locale @user.locale

    mail(
      :subject => i18n_subject,
      :to => @user.email_with_name
    ) do |format|
      format.text { render :layout => 'text_email' }
      format.html
    end
  end

关于我还应该改变什么的任何想法?

4

3 回答 3

9

我发现在 Mail 对象上设置(未记录的)transport_encoding 有效:

m = mail(...)
m.transport_encoding = "quoted-printable"
m.deliver

我无法获得通过 ActionMailer 设置 Content-Transfer-Encoding 工作的记录方法。

我的环境:rails (3.1), mail (~> 2.3.3)

于 2013-01-23T23:29:19.193 回答
3

如果您使用自定义邮件程序类,则可以将其设置为邮件程序类中的默认选项,如ActionMailer::Base 文档中所述

class Notifier < ApplicationMailer
  default 'Content-Transfer-Encoding' => '7bit'
end
于 2016-08-23T13:51:30.603 回答
0

我最近也遇到了这个问题。Rails 默认为quoted-printable,但这导致我在 webmail 客户端中出现渲染问题。新行呈现为=0D,webmail 客户端呈现不正确。

我对此的解决方案是仅更改 html 部分的内容编码,因为我还发送了单独的文本部分并且不想更改其编码。该html方法接受一个content_transfer_encoding参数,避免需要一个临时变量:

mail do |format|
  format.text { ... }
  format.html(content_transfer_encoding: '7bit') { ... }
end

文档引用 usingdefault 'Content-Transfer-Encoding' ...但仅在不mail直接调用该方法时才有效。

于 2020-03-05T18:43:56.927 回答