发送异步电子邮件

时间:2013-10-25 14:59:09

标签: ruby-on-rails

如何使用rails 4发送异步电子邮件?我的意思是,当我点击联系表单的“发送”按钮时,页面不会刷新,但电子邮件会被验证并发送,并且会向用户显示一条消息。

我已正确配置action_mailer,并且ContactForm邮件程序包含一个contact操作,该操作会将电子邮件地址作为参数。

结果,

ContactForm.contact("test@gmail.com").delivers #=> delivers email perfectly 

但那是在命令行上工作。我真的不知道使用链接执行此操作的正确方法。我的意思是,我可以创建一个导航到send_email的按钮,然后我可以有这样的路线:

get 'send_email', to: 'contact#sendemail'

然后我会有一个包含此方法链的sendemail操作,如上所示。 但这不是异步的,而且,我也不知道如何在发送电子邮件或突出显示无效字段之前验证电子邮件的字段。

Ajax和JSON是否是突出显示字段的关键?验证怎么样?

resque_mailer似乎是发送异步电子邮件的好方法。但是,为什么我需要这个外部宝石,当ajax由vanilla rails处理得那么好?

2 个答案:

答案 0 :(得分:0)

概念是让表单远程提交。即在create中提交ContactsController方法。然后,该方法将调用worker(resque / sidekiq)来发送电子邮件。

create操作也可以响应json。响应可以是成功或失败(有错误)。

在AJAX成功回调中,您可以触发警报,显示div或任何通知用户电子邮件已发送的内容。

如果使用错误返回json结果,则可以通过JS显示错误消息。

答案 1 :(得分:0)

Railscasts Episode #171在[{3}}

的帮助下演示使用后台流程发送电子邮件