Ruby отправляет письмо с вложением с помощью / usr / sbin / sendmail - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь отправить электронное письмо с csv-файлом для прикрепления. Я делаю следующее, но я получаю только письмо с пустым CSV-файлом (а не с его содержимым) Не могли бы вы помочь мне в этом? Я не хочу использовать какую-либо дополнительную библиотеку, поэтому, пожалуйста, не говорите мне использовать пони или около того;

to="me@exemple.com"
subject='The subject'
from='"Name" <you@exemple.com>'
description ="Desc"

csvnamefile = "/path/to/file/filename.csv"

puts  value = %x[/usr/sbin/sendmail #{to} << EOF
subject: #{subject}
from: #{from}
Content-Description: "#{csvnamefile}"
Content-Type: multipart/mixed; name="#{csvnamefile}"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename="#{csvnamefile}"
Description : #{description}
EOF]

Спасибо

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Спасибо, Алекс. Я мог бы заставить это работать с вашей информацией. Окончательный рабочий результат выглядит так:

binary = File.read(csvnamefile)
encoded = [binary].pack("m")    # base64 econding
puts  value = %x[/usr/sbin/sendmail #{to} << EOF
subject: #{subject}
from: #{from}
Content-Description: "#{csvnamefile}"
Content-Type: text/csv; name="#{csvnamefile}"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename="#{csvnamefile}"
#{encoded}
EOF]
0 голосов
/ 18 июля 2011

/usr/sbin/sendmail ничего не знает о вложениях и обрабатывает текст сообщения электронной почты в соответствии с RFC 5322 как плоский текст US-ASCII. Чтобы отправить файл в виде вложения, вам необходимо отформатировать ваше сообщение как сообщение MIME в соответствии с RFC 2045 . Пример такого сообщения см. Приложение A к RFC 2049 .

...