Ruby使用/ usr / sbin / sendmail发送带附件的电子邮件

时间:2011-07-18 12:03:22

标签: ruby attachment sendmail

我正在尝试发送带有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 个答案:

答案 0 :(得分:1)

谢谢Alex。我可以使用你的信息。 最终的工作结果如下:

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]

答案 1 :(得分:0)

/usr/sbin/sendmail对附件一无所知,并根据RFC 5322将电子邮件正文视为单独的US-ASCII文本。要将文件作为附件发送,您需要根据RFC 2045将邮件格式化为MIME邮件。有关此类消息的示例,请参阅Appendix A to RFC 2049