我正在使用 Rails 3.2.13,并且一直在遵循 ActionMailer 指南(http://guides.rubyonrails.org/action_mailer_basics.html#sending-emails-with-attachments),但我在发送电子邮件时遇到了困难附件。
执行后,电子邮件正确发送,但附件始终损坏。特别是,我看到呈现的电子邮件和附件的正确文件名,但作为无法打开的 1KB 文件。我已经在堆栈溢出和其他地方看到过类似的问题(例如Rails 3: Sending Mail with Attachment - 第一次发送后文件损坏和Rails 3.0.7 ActionMailer 附件问题),但所提供的解决方案都无法提供帮助。我尝试了两种不同的传输方式(Gmail SMTP 和 Sendgrid)、几种文件类型(png、pdf 等),以及内联附件和普通附件,但效果始终相同。
这是邮件程序的代码:
class UserMailer < ActionMailer::Base
# A hash of default values for email messages
default from: "me@mysite.com"
def welcome_email(user)
@user = user
@url = "http://localhost:3000"
attachments['logo_email.png'] = File.read("public/img/logo_email.png")
mail(:to => user.email, :subject => "Welcome")
end
end
我在我的控制器中调用它的地方看起来像这样(我在这里使用delayed_job,但即使没有它,附件也已损坏):
UserMailer.delay.welcome_email(@user)