如何在未使用ruby-gmail创建文件的情况下发送带附件的电子邮件?

时间:2014-10-13 14:50:23

标签: ruby gmail

我使用ruby-gmail gem发送邮件。

我想做的是将ruby哈希作为json文件发送。

示例:

require 'gmail'
require 'json'

hash = {'foo' => 'bar}

Gmail.new(<EMAIL>, <PASSWORD>) do |gmail|
  gmail.deliver do
    to <RECIPIENT>
    subject <SUBJECT>
    text_part do
      body <EMAIL MESSAGE>
    end
    add_file hash.to_json
  end
end

当我尝试这个时,它只是发送没有附件的邮件。

我接下来可以尝试什么?

修改

我想在没有先创建文件的情况下这样做。

2 个答案:

答案 0 :(得分:0)

您需要先创建该文件,然后才能使用add_file方法发送该文件:

hash = {'foo' => 'bar'}
File.open("filename.json","w") do |f|
  f.write(hash.to_json)
end

然后:

Gmail.new(<EMAIL>, <PASSWORD>) do |gmail|
  gmail.deliver do
    to <RECIPIENT>
    subject <SUBJECT>
    text_part do
      body <EMAIL MESSAGE>
    end
    add_file 'path/to/filename.json`
  end
end

答案 1 :(得分:0)

如果您使用&#34; gmail&#34; gem(https://rubygems.org/gems/gmail),然后您可以添加具有名称和内容参数的文件,而不必实际创建本地文件。例如:

Gmail.connect(<EMAIL>, <PASSWORD>) do |gmail|
   gmail.deliver do
     to(<RECIPIENT>)
     subject(<SUBJECT>)
     text_part do
       body(<TEXT_BODY>)
     end
     html_part do
        content_type('text/html; charset=UTF-8')
        body(<HTML_BODY>)
     end

     add_file({filename: <FILE_NAME>, content: <FILE_CONTENT>})
   end
end