Rails - email subject is gibberish in hotmail

£可爱£侵袭症+ 提交于 2019-12-12 03:49:35

问题


Sending emails works perfectly for all major email clients, except for hotmail (and some other), it shows as:

=?windows-1255?Q?Z33=30_=F9=22=E7=20=F2=E1=E5=F8_=F9=E5=E1=F8=20=E1=F9=E5=E5=E9=20=36=30_=F9=22=E7=20=EC=22=EE=F8=E2=E5=E6=E4=22=2C_=E1=E9=FA_=F7=F4=E4=20=E5=EE=E0=F4=E9=E9=E4_=EE=F9=F4=E7=FA=E9=FA=2C=20=E1=EE=FA=E7=ED=20=F9=E5=F7=20=E4=F4=F9=F4=

Dosn't matter if it's utf8 or not. It seems like hotmail can't read long quoted subjects, because for shorter ones it shows up ok.

AFAIK what gmail does for example is to split the subject to pieces, 64 (or something) chars long... But I can't figure out how to do that in rails (2.3.8). Rails encodes the subject by default, in quoted form, can't find how to override that so I could split it by myself...

Thanks.


回答1:


If you have a really long subject line then you might need to split it onto multiple lines using ?= like the following:

Subject: =?iso-8859-1?Q?This_is_a_really_long_subject_that_should_need_so?=
 =?iso-8859-1?Q?me_encoding_to_make_sure_that_it_all_fits_correct?=
 =?iso-8859-1?Q?ly_=E7?=

I had to put a 'ç' in at the end of the subject line to get apple mail to quote it but it should give you the picture. I can't remember exactly how long it should be before you split it I think its 78 after encoding but not 100% sure, 64 will be safe if that is what you are seeing.




回答2:


This is what worked for me:

module ActionMailer
  module Quoting
    def quoted_printable(text, charset)
      require 'base64'
      #text.scan_utf8(/.{1,64}/m).map{|text| "=?#{charset}?B?#{Base64.b64encode(text)}?="}.join("\n")
      "=?#{charset}?B?#{Base64.b64encode(text).gsub(/\n/, '')}?="
    end
  end
end

module TMail
  class SubjectHeaderField < UnstructuredHeader
    def parse
      #Do nothing
    end
  end

  class HeaderField
    FNAME_TO_CLASS = FNAME_TO_CLASS.merge('subject' => SubjectHeaderField)
  end
end


来源:https://stackoverflow.com/questions/3545916/rails-email-subject-is-gibberish-in-hotmail

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