ActionMailer无法附加HTML文件

时间:2012-04-17 05:53:06

标签: ruby-on-rails actionmailer

我不确定为什么我通过带有附件的ActionMailer发送的电子邮件不会向我显示附件,而是附件的内容只显示/输出到电子邮件中。

class MyMailer < ActionMailer::Base
  default :from => "email@email.com"

  def test_email()
    attachments['testresult1.html'] = {
      :filename => 'testresult1.html',
      :body => File.read('C:\\testresult1.html')
    }

  mail(:to => 'email@email.com',
    :subject => 'Cool great message'
  )
  end
end

电子邮件的输出如下所示

Date: Tue, 17 Apr 2012 14:11:52 +1000
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8;
filename=testresult1.html
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=testresult1.html
filename: testresult1.html
Content-ID: <4f8ced883c0d9_1b1c30b580813e@PC-049.mail>

然后是HTML文件/附件的全部内容。

我希望将HTML文件附加到电子邮件中,因为它将附加到普通电子邮件中,我应该能够双击附件并在浏览器中打开它。

Email Client = Microsoft Outlook
Connection = SMTP
Rails = 3.2.1
ActionMailer = 3.2.1
Mail = 2.4.4

3 个答案:

答案 0 :(得分:2)

您应该尝试向#mail添加body密钥。

答案 1 :(得分:2)

非常感谢菲利普:)

我发送了一个没有任何body属性的附件 我面临着两个问题:

  1. PDF的名称始​​终是“noname”
  2. 有时PDF已损坏
  3. 但是在为邮件添加body属性之后,它可以正常工作。

    所以,正确的语法是:

    attachments['mypdf.pdf'] = File.read('#{Rails.root.to_s}/public/test.pdf')
    mail(:to => guru****@gmail.com, :from => guru****@gmail.com, :subject => 'Attachment Test Mail', :body => 'Regards, Guru')
    

答案 2 :(得分:1)

我对'Noname'有同样的问题并且已损坏。

我正在使用以下代码:

attachments['126539_statistics.pdf'] = File.read("app/assets/pdfs/126539_statistics.pdf")
mail(:to => email, :subject => subject, :body => message)

发送带附件的邮件没有任何问题......