我正在创建一个用于发送电子邮件的应用。我不需要使用常规邮件程序和查看模板,因为我只是接收将用于生成电子邮件的数据。但是,我认为使用ActionMailer
而不是直接与SMTP
进行交互有一些好处。我在尝试实例化ActionMailer::Base
的新实例时遇到了问题。如何在不必定义扩展ActionMailer
的新类的情况下单独使用ActionMailer::Base
?
答案 0 :(得分:7)
ActionMailer的基础功能由mail gem提供。这使您可以非常简单地发送邮件,例如:
Mail.deliver do
from 'me@test.lindsaar.net'
to 'you@test.lindsaar.net'
subject 'Here is the image you wanted'
body File.read('body.txt')
add_file :filename => 'somefile.png', :content => File.read('/somefile.png')
end
它支持通过ActionMailer所做的所有相同方式进行传递。
答案 1 :(得分:2)
这是最基本的解决方案。您必须将smtp设置和硬编码值更改为变量等。这样您就不需要使用View。如果您仍想使用ERB,我建议您查看Railscast 206。
只需更改此代码,将其放在“test_email.rb”等文件中,然后使用ruby test_email.rb
require 'action_mailer'
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => "testuser123",
:password => "secret",
:authentication => "plain",
:enable_starttls_auto => true
}
class TestMailer < ActionMailer::Base
default :from => "testuser123@gmail.com"
# def somemethod()
# mail(:to => "John Doe <john@example.com>", :subject => "TEST", :body => "HERE WE GO!!!")
# end
def mail(args)
super
end
end
# TestMailer.somemethod().deliver
TestMailer.mail(:to => "John Doe <john@example.com>", :subject => "TEST", :body => "HERE WE GO!!!")
答案 2 :(得分:2)
如果是这样,ActionMailer对你没有意义,因为它确实不适合这项工作。
我认为你的赢家是一个叫做Pony的红宝石宝石: https://github.com/benprew/pony
示例:
Pony.mail(:to => 'you@example.com', :from => 'me@example.com', :subject => 'hi', :body => 'Hello there.')