ruby-on-rails - mailgun rails - 如何为每个 ActionMailer 定义 mailgun_settings
问题描述
我正在使用mailgun-ruby在我的 rails 应用程序中发送电子邮件。
我在我的 Mailgun 帐户上激活了多个域,并且我希望为每个 ActionMailer 选择一个特定的域来发送电子邮件。
gem 的文档只解释了设置 mailgun_settings 的全局方法:
config.action_mailer.delivery_method = :mailgun
config.action_mailer.mailgun_settings = {
api_key: 'api-myapikey',
domain: 'mydomain.com'
}
有什么建议可以通过 ActionMailer 完成吗?
解决方案
为此,我想出了一个自制的设计:
class ApplicationMailer < ActionMailer::Base
before_action do
@layout = 'mailer'
@from = 'default@domain.com'
@to = 'default_to@domain.com'
@subject = 'Default Subject'
@domain = 'default.domain.com'
@params = {}
end
after_action do
ac = ActionController::Base.new()
mg = Mailgun::Client.new 'key-xxxxxxxxx'
message_params = {
from: @from,
to: @to,
subject: @subject,
text: ac.render_to_string("#{self.class.to_s.underscore}/#{action_name}.text", layout: @layout, locals: @params),
html: ac.render_to_string("#{self.class.to_s.underscore}/#{action_name}.html", layout: @layout, locals: @params)
}
mg.send_message @domain, message_params
end
end
class UserMailer < ApplicationMailer
before_action do
@from = 'Domain <updates@domain.com>'
@domain = 'updates.domain.com'
end
def test
@to = "yourself@gmail.com"
@subject = "Test"
@params = {}
end
end
自定义user_mailer/test.txt.erb
并user_mailer/test.html.erb
发送电子邮件:
UserMailer.test
推荐阅读
- php - 在 PHP 和 MySQL 中上传个人资料图片:我做错了什么?
- c# - 将简单对象转换为简单通用接口
- python - 网页抓取 Python Shell 没有响应
- c++ - 标记和语法
- javascript - 如何在 Fabric 中为线条绘制设置动画
- java - java netty消息编码器/解码器无响应
- c++ - 嵌套地图结构创建空地图
- javascript - JavascriptExecutor:无法读取 null 的属性“removeAttribute”
- php - 使用 php Reflection API 制作动态的 getter 和 setter
- mysql - MySQL 外键和外部参照表