How to change the mailer Content-Transfer-Encoding settings in Rails?

折月煮酒 提交于 2020-01-02 02:48:07

问题


The 'Content-Transfer-Encoding' setting is set to '7bit' by default. The mail server Postfix is breaking down the email header by bunch of 1000 caracteres, meaning that if you have a long email (using HTML for example), you end up having spaces in the middle of your text or links. (See this thread for more info: http://tech.groups.yahoo.com/group/postfix-users/message/273296)

Following the Rails ActionMailer documentation (http://api.rubyonrails.org/classes/ActionMailer/Base.html), adding the following code to my app file should make it, but it doesn't work:

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

I still end up with the default:

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

My email look like that:

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

Any idea on what else should I change?


回答1:


I found that setting the (undocumented) transport_encoding on the Mail object works:

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

I could not get the documented approach of setting the Content-Transfer-Encoding via ActionMailer to work.

My environment: rails (3.1), mail (~> 2.3.3)




回答2:


If you use a custom mailer class, you can set it as a default option in your mailer class, as described in the documentation of ActionMailer::Base

class Notifier < ApplicationMailer
  default 'Content-Transfer-Encoding' => '7bit'
end


来源:https://stackoverflow.com/questions/11720270/how-to-change-the-mailer-content-transfer-encoding-settings-in-rails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!