Rails - тема электронной почты бессмысленна в hotmail - PullRequest
0 голосов
/ 23 августа 2010

Отправка электронной почты отлично работает для всех основных почтовых клиентов, кроме горячей почты (и некоторых других), она отображается как:

=?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=

Не имеет значения, если это utf8 или нет. Похоже, что hotmail не может читать длинные цитируемые темы, потому что для более коротких - нормально.

AFAIK, например, то, что делает gmail, состоит в том, чтобы разделить тему на куски длиной 64 (или что-то) символа ... Но я не могу понять, как это сделать в рельсах (2.3.8). Rails кодирует тему по умолчанию, в кавычках, не может найти, как переопределить это, чтобы я мог разделить его сам ...

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 августа 2010

Вот что у меня сработало:

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
0 голосов
/ 23 августа 2010

Если у вас очень длинная сюжетная линия, вам может понадобиться разбить ее на несколько строк, используя? = Как показано ниже:

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?=

Мне пришлось поставить 'ç' в концестрока темы, чтобы получить яблочную почту, чтобы процитировать ее, но она должна дать вам картину.Я не могу точно вспомнить, сколько должно пройти времени, прежде чем разделить его, я думаю, что его 78 после кодирования, но не уверен на 100%, 64 будет безопасным, если это то, что вы видите.

...