Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 328
Vincent Peres Avatar asked Jul 30 '12 11:07

Vincent Peres


2 Answers

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)

like image 192
Felix Livni Avatar answered Nov 04 '22 00:11

Felix Livni


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
like image 31
0x4a6f4672 Avatar answered Nov 04 '22 01:11

0x4a6f4672