新手问题 ActionMailer 的邮件模板想用其他方式怎么发?

cestivan · 2013年11月25日 · 最后由 cestivan 回复于 2013年11月28日 · 3287 次阅读

class 名为 CustomMailer 里面有一个名为 say_hello 的方法,对应一封邮件。 正常来说就是通过:CustomMailer.say_hello.deliver

如果我想要用其他发送方式(例如 rest-client)来发送这封邮件,怎么发?

没懂你的意思,用 http 发送邮件?

#1 楼 @dddd1919 嗯,因为还用到了 web api,方便使用不同的发送渠道。例如触发邮件用一个邮件服务,群发邮件用另外一个。不知道有没有人有同样的实践

3 楼 已删除
4 楼 已删除
  1. 直接调用 api,比如 rest-client(简单)
  2. 自定义 Mailer,覆盖 deliver! 方法 http://mdushyanth.wordpress.com/2011/08/06/custom-mail-delivery-method-in-rails-3/

#5 楼 @Rei 我指的是,如果要用 API 的方式来发送 mailer 定义好的邮件,怎么发?表达不清楚,请见谅

#2 楼 @cestivan 你是指用不同的 SMTP 配置吧,这个还真没实践过,rails 下可以直接在 production.rb 中配置好邮件服务器的参数,一般是可以指定同一邮件服务器下不同帐号发邮件。 照你的需求,我觉得可以写一个 rake 单独配置 SMTP 并发送邮件,不使用 rails 的配置,能实现使用不同的邮件服务器发送邮件,在对应 action 里调用一下

#6 楼 @cestivan 那么要看你用的邮件服务的 API 是什么啊

像 mailgun 文档同时提供了 curl Ruby Python PHP Java C# 的例子

http://documentation.mailgun.com/user_manual.html

你是说用 Mailer render 内容,然后用别的 api 发?

Mailer 对象的正文可以这样取

CustomMailer.say_hello.body.raw_source
=> "hello\n..."

#9 楼 @Rei 啊,要的就是这个答案!~Thanks

需要 登录 后方可回复, 如果你还没有账号请 注册新账号