从Redmine插件发送电子邮件

问题描述 投票:0回答:2

我正在写一个Redmine插件。我已经准备好了模型、视图和控制器。 每当有人创建、更新或删除我的模型时,我想向特定组中的人员发送电子邮件。 (类似于有人创建或更新问题时 Redmine 发送的电子邮件)有人可以让我知道解决这个问题的最佳方法是什么吗? 谢谢!

email redmine redmine-plugins
2个回答
15
投票

我知道自你问起以来已经过去了 2 年,但我遇到了同样的问题,并且我弄清楚了如何使用我的插件发送电子邮件。

对于名为 my_plugin 的插件,您需要做的是:

1.创建一个继承自 Mailer 的 Model。

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

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

像这样:

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

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

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

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

  1. my_method.html.erb
  2. my_method.text.erb

否则 redmine 将会崩溃并出现“找不到模板”异常。

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

  1. on_new_article.html.erb
  2. on_new_article.text.erb

在我的 on_new_article.html.erb 中我写了类似的内容:

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

-1
投票

这个方法还管用吗? 如果是这样,我想知道如何在控制器中调用它。

      # Envoyer l'e-mail avec les pièces jointes
  user = User.find(to)
  if MyPluginMailer.send_standard_mail(user,subject)
    flash[:notice] = "L'e-mail a été envoyé avec succès."
    # Rediriger vers la page de l'issue actuelle
    redirect_to(Issue.find(current_issue_id), status: :found) # refresh
    Rails.logger.info("L'e-mail a été envoyé avec succès.")

我的印象是我的脚本不适合 MyPluginMailer 操作。可以肯定的是,我在 :

中放置了一个记录器
class MyPluginMailer < Mailer
def send_standard_mail(user_to_warn, article)
  Rails.logger.info("======================= Entrée dans la méthode send_standard_mail de MyPluginMailer")
  mail to: user_to_warn.mail, subject: "New article: #{article.title}"
  @article = article #So that @article will be available in the views.
end
end

它甚至没有出现在日志中。

除了这个之外,我真的没有其他发送电子邮件的方式。你有什么想法?预先感谢

© www.soinside.com 2019 - 2024. All rights reserved.