Пони не отправляет тело письма правильно, когда вложение представляет собой файл .html?

При отправке писем с вложениями (html-файлами) в Gmail тело письма не отправляется. Если я закомментирую настройки вложений ниже, все прошло нормально. Если так получилось, что в письме нет вложений, все прошло нормально.

Я проверил, что проблема возникает только тогда, когда файл имеет расширение «html». Другие файлы, такие как log, png, подойдут.

  • ruby 1.8.7 (уровень обновления 302, 16 августа 2010 г.) [i386-mingw32]
  • пантомимы (1.18)
  • пони (1.4)

Как правильно отправлять .html файлы в моей функции отправки почты?

Обновление: я добавил отрывок из полученного письма, а его тело отображается как средняя mimepart. Искать Content-ID: <[email protected]>

def email_it(body, subject, to, from, attachment_to_send)

  $smtp = 'mail.com.au'
  $smtp_port = 25

  body_with_footer = body +Email_footer

    Pony.mail(
        :to => to, 
        :from => from,
        :subject => subject, 
        :body => Nokogiri::HTML(body_with_footer).text, 
        :html_body =>  body_with_footer, 
        :attachments => attachment_to_send,
        :via => :smtp, 
        :via_options => {
                :address     => $smtp,
                :port     => $smtp_port,
                :enable_starttls_auto => false
        }
    )
end

Выписка из полученного письма

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



----==_mimepart_4fdfd77251dac_a0c1a825dc83328
Date: Tue, 19 Jun 2012 11:35:46 +1000
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: base64
Content-ID: <[email protected]>

QW50wqBydW7CoG5hbWXCoMKgOsKgRWR1bWF0ZV91cGdyYWRlX211bHRpwqAo
ZXhwcmVzcylPdmVyYWxswqByZXN1bHQ6wqBmYWlswqBBbnTCoHJ1bsKgdG9v
azrCoG5vYm9kecKga25vd3PCoDstKcKgUmVzdG9yaW5nwqBmcm9twqAvdmFy
L2xpYi9lZHVtYXRlL2JkcnMvbG9xdWF0L2RhdGFiYXNlcy93ZWVrbHkvTE9R
VUFULjAuZGIyaW5zdDEuTk9ERTAwMDAuQ0FUTjAwMDAuMjAxMjA2MTAwMjMw
MDYuMDAxVGltZXN0YW1wwqBvZsKgYmFja3VwwqBpbWFnZcKgaXM6wqAxMMKg
SnVuwqAyMDEywqAwMjozMERhdGFiYXNlwqBSQVRJT05BTMKgcmVzdG9yZWTC
oHN1Y2Nlc3NmdWxsecKgZnJvbcKgZGF0YWJhc2U6wqBMT1FVQVRyZXN0b3Jl
wqB0b29rOsKgMDowMDozOC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LURldGFpbHPCoGZvcsKgYWxswqBSYXRpb25hbMKgdGVzdMKgc3VpdHMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1FZHVtYXRlX3VwZ3JhZGU6wqBs
b2fCoGZpbGXCoG5vdMKgY3JlYXRlZC7CoEVycm9ywqBpbsKgcHJldmlvdXPC
oHRlc3TCoHN1aXTCoChzdG9wT25GYWlsdXJlPSd0cnVlJynCoG9ywqBpbsKg
YW50wqBydW7CoGl0c2VsZi5Qb3dlcmVkIGJ5IEVkdVRlc3RlciBodHRwOi8v
MTAuMC4wLjUw


----==_mimepart_4fdfd77251dac_a0c1a825dc83328
Date: Tue, 19 Jun 2012 11:35:46 +1000
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <[email protected]>

Ant&nbsp;run&nbsp;name&nbsp;&nbsp;:&nbsp;Edumate_upgrade_multi&nbsp;(express)<BR>Overall&nbsp;result:&nbsp;fail<BR>&nbsp;<BR>Ant&nbsp;run&nbsp;took:&nbsp;nobody&nbsp;knows&nbsp;;-)<BR>&nbsp;<BR>Restoring&nbsp;from&nbsp;/var/lib/edumate/bdrs/loquat/databases/weekly/LOQUAT.0.db2inst1.NODE0000.CATN0000.20120610023006.001<BR>Timestamp&nbsp;of&nbsp;backup&nbsp;image&nbsp;is:&nbsp;10&nbsp;Jun&nbsp;2012&nbsp;02:30<BR>Database&nbsp;RATIONAL&nbsp;restored&nbsp;successfully&nbsp;from&nbsp;database:&nbsp;LOQUAT<BR>restore&nbsp;took:&nbsp;0:00:38<BR><BR><BR>------------------------------<BR>Details&nbsp;for&nbsp;all&nbsp;Rational&nbsp;test&nbsp;suits<BR>------------------------------<BR><BR>Edumate_upgrade:&nbsp;log&nbsp;file&nbsp;not&nbsp;created.&nbsp;Error&nbsp;in&nbsp;previous&nbsp;test&nbsp;suit&nbsp;(stopOnFailure='true')&nbsp;or&nbsp;in&nbsp;ant&nbsp;run&nbsp;itself.<BR><BR><HR><BR>Powered by EduTester http://10.0.0.50

----==_mimepart_4fdfd77251dac_a0c1a825dc83328
Date: Tue, 19 Jun 2012 11:35:46 +1000
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8;
 filename=rational_ft_logframe.html
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename=rational_ft_logframe.html
Content-ID: <[email protected]>

<HTML>
<HEAD>
<META HTTP-EQUIV="charset" CONTENT="utf-8">

update2

из группы пони гугл (не мои слова)

У меня есть похожий, но более простой пример.

Pony.mail to: '[email protected]', 
   from: '[email protected]',
   subject: 'test attachments',
   html_body: '<p>HTML</p>',
   body: 'Text',
   attachments: { File.basename(a_file_path) => File.read(a_file_path) }

Я считаю, что тип содержимого и границы не устанавливаются должным образом. С помощью приведенного выше кода я увижу только вложение, я не увижу HTML или текстовые тела, хотя они отправляются правильно. Я вижу их, если смотрю на альтернативы (Option-Command-] в OSX Mail), и они отображаются правильно. Content-type установлен на multipart / alternation, Content-Disposition отсутствует. Я считаю, что в этом случае мы отправляем html, простой текст и вложение в качестве альтернативы, а не 2 альтернативы с вложением, которые, как мне кажется, являются смешанными, хотя установка типа контента multipart / mixed не работает либо: все 3 появляются на одной линии друг с другом.


person Radek    schedule 19.06.2012    source источник
comment
Я поговорил с разработчиком pony gem и провел обширное тестирование, и похоже, что на стороне пони нет ошибок. Я протестировал еще 2 почтовых веб-клиента и даже Thunderbird. Все с разными результатами. Gmail дает наилучшие результаты.   -  person Radek    schedule 27.07.2012
comment
У меня точно такая же проблема при отправке вложения pdf с помощью: html_body. При использовании only: body почта работает нормально.   -  person Mika Tuupola    schedule 10.10.2012
comment
@Mika Пожалуйста, напишите автору драгоценного камня.   -  person Radek    schedule 11.10.2012


Ответы (3)


Мое решение - переименовать файлы .htm (l) в .txt перед прикреплением.

person Radek    schedule 26.07.2012

Для меня это сработало, добавив

headers: { "Content-Type" => "multipart/mixed" }

в качестве параметра Pony.mail.

person Nic    schedule 21.06.2013

Поместите это вложение под опцию перехода, как это

Pony.mail to: '[email protected]', 
   from: '[email protected]',
   subject: 'test attachments',
   html_body: '<p>HTML</p>',
   body: 'Text',
   :via_options => { :port => '25',
                     :address => 'smtp.gmail.com',
                     :enable_starttls_auto => true, 
                     :attachments: { File.basename(a_file_path) => File.read(a_file_path)}
                    }
person Htoo Myat Aung    schedule 30.03.2014