Rails 3 ActionMailer破坏了附件

我正在使用Rails 3.2.13并一直关注ActionMailer指南( http://guides.rubyonrails.org/action_mailer_basics.html#sending-emails-with-attachments ),但我在发送电子邮件时遇到了困难附件。

执行后,电子邮件正确发送,但附件始终已损坏。 特别是,我看到呈现的电子邮件和附件的正确文件名,但作为1KB文件无法打开。 我已经看到了关于堆栈溢出和其他地方的类似问题(例如Rails 3:发送带附件的邮件 – 第一次发送后损坏的文件和Rails 3.0.7 ActionMailer附件问题 ),但是所提供的解决方案都没有提供帮助。 我尝试了两种不同的传输方式(Gmail SMTP和Sendgrid),多种文件类型(png,pdf等),以及内联和普通附件,但总是具有相同的效果。

这是邮件的代码:

class UserMailer  user.email, :subject => "Welcome") end end 

我在我的控制器中调用它看起来像这样(我在这里使用delayed_job,但即使没有它,附件也会被破坏):

 UserMailer.delay.welcome_email(@user) 

显然,这是一个仅在Windows中读取文件的行为。您需要为Windows中的Ruby指定“r”(只读)和“b”(二进制)才能正确读取它。 http://ruby-doc.org/core-1.9.3/IO.html

请参阅以下相关问题

将本地文件的内容读入Rails中的变量

请尝试以下方法:

attachments['logo_email.png'] = File.read("public/img/logo_email.png", mode: "rb")