0

在调用controller.rb 之后,一个文件(chart.png)将保存在我的rails 应用程序文件夹中,那么如何获取这个文件并将其附加到邮件中?

控制器.rb

def mail  
  @imageURL = "https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=5&choe=UTF-8"
  open(@imageURL) do |chart|
    File.open('chart.png', 'wb') {|f| f.write chart.read }
  end  
  UserMailer.welcome_email(@imageURL, @mailID).deliver
end

我如何将该图像传递给welcome_email方法以附加邮件?需要一些帮助来解决这个问题吗?

user_mailer.rb

def welcome_email(imageURL, mailID)
  mail(:to => mailID,
   :subject => "code",
   :body => "Code for the branch "+imageURL+"")
  end
end
4

1 回答 1

2

如果要将其附加到电子邮件中,则必须下载图像,然后从文件系统附加它。

创建附件很容易:

attachments["filename"] = File.read("/path/to/file")

如果我是你,我会在邮件正文的 image_tag 中添加图片

编辑:我没有看到您已经在编写文件。

所以这是完整的解决方案:

def mail  
  @imageURL = "https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=5&choe=UTF-8"
  path_image = "/tmp/chart-#{@imageUrl.hash}.png" #Avoid filename collision
  open(@imageURL) do |chart|
     File.open(path_image, 'wb') {|f| f.write chart.read }
  end  
UserMailer.welcome_email(@imageURL,@mailID, path_image).deliver
File.delete(path_image)
end

def welcome_email(imageURL,mailID, path_image)

attachments["charts.png"] = File.read(path_image)
mail(:to => mailID,
   :subject => "code",
   :body => "Code for the branch "+imageURL+"")
end
于 2012-07-31T19:35:03.340 回答