2012-07-30 15 views
6

Ustawienie "Content-Transfer-Encoding" jest ustawione domyślnie na "7bit". Serwer pocztowy Postfix rozkłada nagłówek wiadomości e-mail o kilka tysięcy znaków, co oznacza, że ​​jeśli masz długą wiadomość e-mail (np. Przy użyciu HTML), w efekcie masz spacje w środku tekstu lub linków. (Zobacz ten wątek, aby uzyskać więcej informacji: http://tech.groups.yahoo.com/group/postfix-users/message/273296)Jak zmienić ustawienia kodowania zawartości przesyłek pocztowych w Railsach?

Po dokumentacji Rails ActionMailer (http://api.rubyonrails.org/classes/ActionMailer/Base.html), dodanie następującego kodu do pliku mojej aplikacji powinno spowodować, że , ale to nie działa:

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

nadal skończyć z domyślnie:

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

Mój email wyglądać tak:

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 

Każdy pomysł, co jeszcze powinienem zmienić?

Odpowiedz

7

Okazało się, że ustawienie (nieudokumentowane) transport_encoding na obiekcie poczta działa:

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

nie mogłem uzyskać udokumentowaną metodę ustawiania Content-Transfer-Encoding poprzez ActionMailer do pracy.

Moje otoczenie: szyn (3,1), poczta (~> 2.3.3)

+0

fyi, długość linii e-mail jest ograniczona do 998 znaków. zobacz http://stackoverflow.com/questions/1592291/what-is-the-email-subject-length-limit –

+0

bardzo dziękuję, więc nie ma innej opcji niż dodanie breakline (\ r \ n) dla długich e-maili –

+0

Rzeczywiście. MUSI być CRLF co 998 znaków. Mimo to, w zależności od kodowania treści, możesz uniknąć umieszczania CRLF w samej treści. –

0

Jeśli używasz niestandardowej klasy mailera, można ustawić ją jako domyślną opcję w swojej klasie mailer, jak opisano w documentation of ActionMailer::Base

class Notifier < ApplicationMailer 
    default 'Content-Transfer-Encoding' => '7bit' 
end 
Powiązane problemy