ruby-on-rails - redmain的mailer.rb的patch mail方法
问题描述
我需要在我的插件中更改 redmine 邮件程序的这种行为:class Mailer < ActionMailer::Base
def mail(headers={}, &block)
headers.reverse_merge! 'X-Mailer' => 'Redmine',
'X-Redmine-Host' => Setting.host_name,
'X-Redmine-Site' => Setting.app_title,
'X-Auto-Response-Suppress' => 'All',
'Auto-Submitted' => 'auto-generated',
'From' => Setting.mail_from,
'List-Id' => "<#{Setting.mail_from.to_s.tr('@', '.')}>"
我需要从我的插件中为一个特殊项目更改“From”值,而无需重写 redmine 源。可能吗?
我尝试这样的 redmine 补丁:
require_dependency 'mailer'
module MyPlugin
module Patches
module MailerPatch
def self.included(base)
base.send(:prepend, InstanceMethods)
base.send(:extend, ClassMethods)
end
...
# Builds a mail for notifying user about an issue info required
def issue_info_required(user, journal)
@issue = journal.journalized
@journal = journal
@author = journal.user
@user = user
redmine_headers 'Project' => @issue.project.identifier,
'Issue-Id' => @issue.id,
'Issue-Author' => @issue.author.login,
'From' => 'aaa@aaa.aa'
redmine_headers 'Issue-Assignee' => @issue.assigned_to.login if @issue.assigned_to
message_id @journal
references @issue
@journal_details = journal.visible_details
@issue_url = url_for(:controller => 'issues', :action => 'show', :id => @issue, :anchor => "change-#{@journal.id}")
subject = "Обращение #{@issue.id}. #{@issue.subject}. Запрос дополнительной информации"
mail :to => user, :subject => subject, :From => 'qqq@qqq.qq'
end
但是没有成功...
headers.reverse_merge! 'X-Mailer' => 'Redmine',
'X-Redmine-Host' => Setting.host_name,
'X-Redmine-Site' => Setting.app_title,
'X-Auto-Response-Suppress' => 'All',
'Auto-Submitted' => 'auto-generated',
'From' => Setting.mail_from,
'List-Id' => "<#{Setting.mail_from.to_s.tr('@', '.')}>"
#headers['From'] = "xxx@xxx.xx"
headers.keys.each do |k|
Rails.logger.error "--- after key: #{k} value: #{headers[k]}"
end
Rails.logger.error "---From: #{headers['From']}"
结果:
[ActionMailer::DeliveryJob] --- after key: X-Mailer value: Redmine
[ActionMailer::DeliveryJob] --- after key: X-Redmine-Host value: hd.rpn.gov.ru
[ActionMailer::DeliveryJob] --- after key: X-Redmine-Site value: Redmine
[ActionMailer::DeliveryJob] --- after key: X-Auto-Response-Suppress value: All
[ActionMailer::DeliveryJob] --- after key: Auto-Submitted value: auto-generated
[ActionMailer::DeliveryJob] --- after key: From value: helpdesk@hhh.hh
[ActionMailer::DeliveryJob] --- after key: List-Id value: <helpdesk.hhh.hh>
[ActionMailer::DeliveryJob] --- after key: to value: User User
[ActionMailer::DeliveryJob] --- after key: subject value: Обращение 131706. все пропало. Запрос дополнительной информации
[ActionMailer::DeliveryJob] --- after key: From value: qqq@qqq.qq
[ActionMailer::DeliveryJob] ---From: helpdesk@hhh.hh
解决方案
推荐阅读
- tornado - 如何在 tornado.wsgi 中修复“TypeError:__call__() 需要 2 个位置参数,但给出了 3 个”?
- swift - 如何用swift将屏幕分成3个梯形按钮?
- typescript - 泛型数组
- javascript - 如何在打字稿中对数组内的总价格求和并在角度7中调用它
- python - RuntimeError: LookupError: KeyError: No devices found for ----->Device Address: b200
- jquery - 如何通过 JQuery AJAX ASP.NET 发送空数据
- excel - 将 For/Next 与变量一起使用时遇到问题
- c# - 将控件属性绑定到 BindingSource
- docker - 如何将 VS Code 调试器附加到在 docker 容器中运行的 .NET Core 监视进程
- android - react-native-camera中YUV_420_888格式的算法旋转