话语插件 - 发送电子邮件

时间:2018-02-23 20:44:39

标签: ruby-on-rails ruby plugins discourse

在我的Discourse插件中,我正在尝试向用户发送电子邮件。

如果我对自己的API功能进行硬编码,这样做会很好,但是为了公开这个,我试图使用内置的电子邮件。但是,我无法收到要发送的电子邮件。

我试过了:

def self.send_user_email(address)
  message = Mail::Message.new(from: "from@fromEmail.com", to: address, body: "hello")
  Email::Sender.new(message, :admin_login).send # I used admin_login as according to the spec it should send even if email is disabled. 
end

当我这样做时,我收到一个错误:

NoMethodError - undefined method `deliver_now' for #<Mail::Message:0x007fa1bf157300>
Did you mean?  deliver:
  mail (2.6.6) lib/mail/message.rb:1379:in `method_missing'

因此,如果我在话语中更新line 184 sender.rb以使用#deliver代替#deliver_now,我可以尝试发送电子邮件给我发展环境。

1 个答案:

答案 0 :(得分:0)

Rails 4.2 已弃用deliver / deliver!,转而使用deliver_now / deliver_now!。 (Pull Request
http://guides.rubyonrails.org/4_2_release_notes.html#action-mailer-deprecations

Rails 5.0 删除了已弃用的deliverdeliver!方法。 (commithttp://guides.rubyonrails.org/5_0_release_notes.html#action-mailer-removals

这就是您收到错误的原因。 Rails应用程序&gt; = 5.0将会出现此错误,直到您引用的源代码更新为止。