Пони не отправляет тело письма правильно, когда вложение.html файл?
При отправке электронных писем с вложениями (html-файлы) в gmail тело письма не отправляется. Если я закомментирую настройки вложений ниже, все прошло нормально. Если случается, что электронная почта не имеет вложений, все прошло нормально.
Я проверил, что проблемы возникают только тогда, когда файл имеет расширение "HTML". Другие файлы, такие как log, png, в порядке.
- ruby 1.8.7 (2010-08-16, уровень обновления 302) [i386-mingw32]
- пантомимы (1.18)
- пони (1.4)
Как я могу отправить .html
правильно ли работают файлы в моей почте?
Обновление: я добавил выдержку из полученного электронного письма, и тело письма представлено в виде среднего элемента. Ищи Content-ID: <4fdfd7725ba26_a0c1a825dc8363d@RATionalxp.mail>
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: <4fdfd7725ba26_a0c1a825dc8358f@RATionalxp.mail>
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: <4fdfd7725ba26_a0c1a825dc8363d@RATionalxp.mail>
Ant run name : Edumate_upgrade_multi (express)<BR>Overall result: fail<BR> <BR>Ant run took: nobody knows ;-)<BR> <BR>Restoring from /var/lib/edumate/bdrs/loquat/databases/weekly/LOQUAT.0.db2inst1.NODE0000.CATN0000.20120610023006.001<BR>Timestamp of backup image is: 10 Jun 2012 02:30<BR>Database RATIONAL restored successfully from database: LOQUAT<BR>restore took: 0:00:38<BR><BR><BR>------------------------------<BR>Details for all Rational test suits<BR>------------------------------<BR><BR>Edumate_upgrade: log file not created. Error in previous test suit (stopOnFailure='true') or in ant run 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: <4fdfd77259308_a0c1a825dc834d0@RATionalxp.mail>
<HTML>
<HEAD>
<META HTTP-EQUIV="charset" CONTENT="utf-8">
Update2
из пони гугл группы (не мои слова)
У меня есть похожий, но более простой пример.
Pony.mail to: 'me@test.com',
from: 'test@test.com',
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), и они отображаются правильно. Тип содержимого установлен как multipart/alternative, нет Content-Disposition. Я полагаю, что в этом случае мы отправляем html, простой текст и вложение как альтернативы, а не как 2 альтернативы с вложением, которое я считаю смешанным, хотя установка типа содержимого multipart/mixed не работает либо: все 3 отображаются в ряд друг с другом.
3 ответа
Мой обходной путь - переименовать файлы.htm(l) в.txt до их подключения.
Для меня это сработало, добавив
headers: { "Content-Type" => "multipart/mixed" }
в качестве параметра для Pony.mail.
Поместите это приложение под опцией via, как это
Pony.mail to: 'me@test.com',
from: 'test@test.com',
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)}
}