如何在Rails中捕获电子邮件的输出并将其放入变量中

con*_*t47 6 ruby-on-rails actionmailer

从ActionMailer输出发送到日志的电子邮件的输出,我想知道我是否可以将该输出转换为变量,以便将其存储在文件中.

PS.我忘了提到这是在Rails 2上

Joh*_*hat 7

正如McStretch指出的那样,观察者是处理邮件传递的每条消息的最佳方式.但是,如果您只想捕获1或2个特殊情况,则可以执行以下操作:

假设您有一个名为ActionMailer的子类MyMailer,并且调用了一封电子邮件foobar,

# Rails 2.x
mail = MyMailer.create_foobar(...) # instead of MyMailer.deliver_foobar(...)
File.open('filename.txt', 'wb') {|f| f.write(mail.body) }
MyMailer.deliver(mail)

# Rails 3.x
mail = MyMailer.foobar(...) # instead of MyMailer.foobar(...).deliver
File.open('filename.txt', 'wb') {|f| f.write(mail.body) }
mail.deliver
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要单独捕获HTML和文本:mail.parts [0] .body(text)mail.parts [1] .body(HTML) (4认同)