Отправить письмо от Redmine Plugin

Я пишу плагин Redmine. У меня уже есть модель, вид и контроллер на месте. Всякий раз, когда кто-то создает, обновляет или удаляет мою модель, я хочу отправить электронное письмо людям в определенной группе. (Подобно электронной почте, отправленной Redmine, когда кто-то создает или обновляет проблему) может кто-то, пожалуйста, дайте мне знать, что было бы лучшим способом сделать это? Спасибо!

1 ответов


Я знаю, что прошло 2 года с тех пор, как вы спросили, но у меня была та же проблема, и я понял, как отправить электронное письмо с моим плагином.

что вам нужно сделать для плагина с именем my_plugin:

1. Создайте модель, которая наследуется от Mailer.

Так что если я хочу Мейлер назвал MyPluginMailer :

  • я создаю redmine_folder / plugins/my_plugin/app/models / my_plugin_mailer.rb
  • я создаю класс MyPluginMailer, который наследует из redmine Mailer

вот так:

class MyPluginMailer < Mailer
end

2. Создайте метод для вызова почтовой программы.

скажем, я пишу плагин новостей для redmine. Я хочу отправить электронное письмо с резюме статьи, которую я отправил, чтобы пользователям не приходилось опрашивать плагин каждый раз, когда они хотят знать, есть ли что-то новое.

Я создаю метод в своем классе mailer:

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 обратного вызова.

3. Создайте некоторые представления для метода.

Я обязательно создайте 2 разных файла:

  1. заканчивается.формат html.Эрб
  2. заканчивается.текст.Эрб

или redmine собирается сбой с исключением" шаблон не найден".

Итак, в моей папке redmine_folder / plugins / my_plugin / app / views/my_plugin_mailer/ I create

  1. on_new_article.формат html.Эрб
  2. on_new_article.текст.Эрб

в моей on_new_article.формат html.erb я пишу что-то вроде :

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