从Redmine插件发送电子邮件

时间:2012-05-08 20:20:43

标签: email redmine redmine-plugins

我正在写一个Redmine插件。我已经有了模型,视图和控制器。 每当有人创建,更新或删除我的模型时,我都希望向某个组中的人发送电子邮件。 (类似于Redmine在有人创建或更新问题时发出的电子邮件)有人可以告诉我这是最好的方法吗? 谢谢!

1 个答案:

答案 0 :(得分:11)

我知道你提问已经2年了,但我遇到了同样的问题,我想出了如何用我的插件发送电子邮件。

您需要为名为my_plugin的插件做些什么:

1。创建一个继承自Mailer的模型。

所以,如果我想要一个名为MyPluginMailer的邮件程序:

  • 我创建了redmine_folder / plugins / my_plugin / app / models / my_plugin_mailer.rb
  • 我创建了继承redmine Mailer
  • 的MyPluginMailer类

就像那样:

class MyPluginMailer < Mailer
end

2。创建一个方法来调用邮件程序。

说我正在为redmine写一个新闻插件。 我想发送一封电子邮件,总结我提交的文章,以便用户每次想知道是否有新内容时都不必轮询插件。

我在邮件程序类中创建了一个方法:

class MyPluginMailer < Mailer
  def on_new_article(user_to_warn, article)
    mail to: user_to_warn.email, subject: "New article: #{article.title}"
    @article = article #So that @article will be available in the views.
  end
end

例如,您可以在after_create回调中在Article类中调用此方法。

3。为方法创建一些视图。

必须创建2个不同的文件:

  1. my_method.html.erb
  2. my_method.text.erb
  3. 或者redmine会因“找不到模板”异常而崩溃。

    所以在我的redmine_folder / plugins / my_plugin / app / views / my_plugin_mailer /我创建

    1. on_new_article.html.erb
    2. on_new_article.text.erb
    3. 在我的on_new_article.html.erb中,我写了类似的内容:

      <h1><%= @article.title %></h1>
      <p><%= @article.summary %></p>