2012-07-30 10 views
6

L'impostazione 'Content-Transfer-Encoding' è impostata su '7bit' per impostazione predefinita. Il server di posta Postfix sta analizzando l'intestazione dell'e-mail di un gruppo di 1000 caratteri, il che significa che se si dispone di una lunga e-mail (ad esempio HTML), si finisce per avere spazi nel mezzo del testo o dei collegamenti. (Vedere questa discussione per ulteriori informazioni: http://tech.groups.yahoo.com/group/postfix-users/message/273296)Come modificare le impostazioni Content-Transfer-Encoding del mailer in Rails?

Seguendo la documentazione di Rails ActionMailer (http://api.rubyonrails.org/classes/ActionMailer/Base.html), aggiungere il seguente codice al mio file dell'app dovrebbe renderlo , ma non funziona:

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

ho ancora finire con il default:

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

mia email quella faccia:

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 

Qualche idea su cos'altro dovrei cambiare?

risposta

7

ho scoperto che l'impostazione del transport_encoding (non documentato) sull'oggetto Mail funziona:

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

non ho potuto ottenere l'approccio documentato di impostare il Content-Transfer-Encoding via ActionMailer a lavorare.

Il mio ambiente: rotaie (3.1), la posta (~> 2.3.3)

+0

fyi, la lunghezza della linea di posta elettronica è limitata a 998 caratteri. vedi http://stackoverflow.com/questions/1592291/what-is-the-email-subject-length-limit –

+0

grazie mille, quindi non c'è altra opzione che aggiungere breakline (\ r \ n) per le email lunghe –

+0

Infatti. Deve esserci un CRLF ogni 998 caratteri. Detto questo, a seconda della codifica del contenuto, è possibile evitare di inserire CRLF nel contenuto stesso. –

0

Se si utilizza una classe mailer personalizzato, è possibile impostare come opzione predefinita nella classe mailer, come descritto nella documentation of ActionMailer::Base

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