我正在创建一个用于发送电子邮件的应用程序。我不需要使用常规邮件和查看模板,因为我只会接收将用于生成电子邮件的数据。但是,我认为使用ActionMailer
而不是直接交互有一些好处SMTP
。我在尝试实例化ActionMailer::Base
. 如何ActionMailer
在不必定义扩展的新类的情况下单独使用ActionMailer::Base
?
问问题
2660 次
3 回答
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 所做的所有相同方法进行传递。
于 2012-05-13T11:59:41.530 回答
2
啊,我想我现在更好地理解了。基本上,您正在寻找一个类似于 php 的 mail() 的简单单行代码,对吗?
如果是这样,ActionMailer 对您来说没有意义,因为它确实不是这项工作的正确工具。
我认为你的赢家是一个名为 Pony 的红宝石: https ://github.com/benprew/pony
例子:
Pony.mail(:to => 'you@example.com', :from => 'me@example.com', :subject => 'hi', :body => 'Hello there.')
于 2012-05-10T14:18:28.977 回答
2
这是最基本的解决方案。您必须将 smtp 设置和硬编码值更改为变量等。这样您就不需要使用视图。如果您仍想使用 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!!!")
于 2012-05-09T19:39:01.500 回答