通过SendGrid使用Ruby on Rails发送带附件的电子邮件

时间:2011-11-26 06:51:03

标签: ruby-on-rails ruby ruby-on-rails-3 email

我正在尝试使用Ruby on Rails发送带附件的电子邮件。 我按照the ActionMailer网站上的说明进行操作。

def welcome(recipient)
  @account = recipient
  attachments['file.csv'] = File.read('/path/to/users.csv')
  mail(:to => recipient,    
       :bcc => ["email@example.com", "email2@example.com"],
       :subject => "Sending attachment")
end

我能够收到电子邮件但没有附件,我正在尝试附加csv文件,但我收到一个名为“noname”的文件作为附件

2 个答案:

答案 0 :(得分:11)

我刚遇到这个问题。我没有为电子邮件提供正文,只是发送附件。不幸的是,似乎SendGrid对此感到困惑,发送一个空的电子邮件(预期)与空的附件(这既不是预期也不是期望)。

因此,解决方案:为电子邮件提供正文。在您的具体情况下,/app/views/application_mailer/welcome.text.erb模板带有简单的文字,说“请参阅附件”或其他适用的内容。

答案 1 :(得分:1)

SendGrid是一种SMTP服务,因此应该像任何其他出站SMTP服务一样运行。您确定您的语法和文件路径是否正确?

class ApplicationMailer < ActionMailer::Base
  def welcome(recipient)
    attachments['free_book.pdf'] = File.read('path/to/file.pdf')
    mail(:to => recipient, :subject => "New account information")
  end
end
  1. 验证语法是否正确
  2. 验证文件路径是否正确
  3. 验证文件权限是否设置正确
  4. 检查您的日志