2010-07-07 107 views
13

我需要通过Ruby发送带有附件的电子邮件。在Ruby中发送带附件的电子邮件

正在四处搜索,但还没有找到任何简单的脚本示例来执行此操作。

最近我发现是ActionMailer,但似乎需要一堆其他脚本才能运行。 (注意:我没有使用Ruby on Rails)

回答

17

你检出了Mail?这就是Rails 3中新的ActionMailer API的基础。

“邮件是Ruby的互联网库,旨在处理电子邮件生成,解析和发送简单,rubyesque方式。”

这里来自文档一个简单的例子:

require 'mail' 

@mail = Mail.new 
file_data = File.read('path/to/myfile.pdf') 
@mail.attachments['myfile.pdf'] = { :mime_type => 'application/x-pdf', 
            :content => file_data } 

更新:或者更简单地说:

@mail = Mail.new 
@mail.add_file("/path/to/file.jpg") 
+0

这些家伙明确表示不使用Rails – sergiovilar 2016-08-21 13:33:59

+2

@sergiovilar:Mail是一个纯粹的Ruby库。它不依赖于Rails。因此这是一个有效的答案(即使在今天,答案发布6年后)。 – 2016-08-23 12:04:27

+0

我得到这个错误:'未定义的方法'[]'为零:NilClass' – mpora 2017-09-13 19:31:36

1

发送电子邮件或电子邮件与一个通过“邮件”gem安装,ny类型的附件变得更加简单。

步骤:1安装“邮件”宝石

步骤:2在红宝石文件保持下面给出的语法:

require 'mail' 
def mailsender 
     Mail.defaults do 
     delivery_method :smtp,{ address: "<smtp_address>",openssl_verify_mode: "none" } 
     end 

     Mail.deliver do 
     from  'from_mail_id' 
     to  'to_mail_id' 
     subject 'subject_to_be_sent' 
     # body  File.read('body.txt') 
     body  'body.txt' 
     add_file '<file_location>/Word Doc.docx' 
     add_file '<file_location>/Word Doc.doc' 
     end 
end 

步骤:3现在只需拨打在步骤定义的方法。