Задать вопрос
maxxannik
@maxxannik
Сайты на WordPress + Интернет магазины WooCommerce

Как отправить свое письмо при создании задачи в Redmine?

Помогите пожалуйста разобраться с тем как работает почта в связке с хуком создания задач в проектах Редмайн.

Сам хук я так понял тут https://github.com/redmine/redmine/blob/1cd985dd6b...

Далее нужно нечто такое:

module MyMailSender
  class Hooks < Redmine::Hook::ViewListener
    def controller_issues_new_after_save(context={ })
      # как то надо отправить почту на адрес mail@site.4mi
    end
  end
end


оно должно быть расположено в файле www/redmine/plugins/myaweplugin/lib/hooks.rb

Тут я прям вступор встал по вопросу чем и как мне отправить почту?

Например в php это делается в 1 строчку:
mail('mail@site.4mi', 'My Subject', 'My message');
В WP есть обертка для этого метода с рядом плюшек: wp_mail() - но также задача решается в 1 строчку.

Перерыл весь гугл, нашел тьму методов, но ни один из них не выглядит понятным для встраивания в данную логику. А часть решений сводится к тому что надо написать аж целую кучу кода с созданием классов и т д. Чую что чего то не понимаю в RoR || Redmine.

Буду признателен за подсказку в нужном направлении или ссылочку на примеры...
  • Вопрос задан
  • 1043 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
fairoj
@fairoj
Программист RM+
В redmine есть метод, который выглядит схоже с вариантом в php. Класс Mailer, метод mail.
Вызвать можно примерно так, но сначала надо будет определить layout
(Mailer::mail :to => user_to, :subject => 'Subject').deliver

, но это не красивый путь

лучше запатчить mailer.rb и добавить в него ваш метод отправки, который будет собирать все необходимые данные для отправки и вызывать метод mail.

Что бы вам было понятнее посмотрите как например отправляются уведомления по изменениям в задачах.
Сначала вызывается метод deliver_issue_edit в нем выбираются все пользователи для отправки и для каждого из них вызывается метод issue_edit, который собирает письмо для отправки, подготовленное письмо отправляется методом deliver

Немного сумбурно получилось, но суть отражает
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
Можно отправлять либо при помощи специфичных для Редмайн средств (читай документацию) либо унаследовав с ActionMailer::Base.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы