我使用了本指令并向我的注册用户发送了“欢迎”邮件。但是这使得用户等待5-8秒,因为服务器正在尝试完成这个邮件。
我不希望用户等到邮件被发送后,立即看到“邮件已经发送”的消息。这给我带来了Rails的背景工作。Rails中的后台作业有许多选项,如delayed_job、Resque等。但就我所知,要使用这种解决方案:
1-创建后台作业2-运行此作业
假设我使用了一个后台作业解决方案,那么我还需要一些其他的东西来运行这个作业,比如cron作业.
我认为,仅仅为了发送注册和密码提醒电子邮件,另一个更容易的解决方案应该是可能的。我的意思是,像另一个外部服务一样,我会为我发送的每一种邮件创建一个模板,2-我会传递一些参数,比如receiver_email、template_id、receiver_username、password_link等等.这样,我就不需要任何背景工作,用户也不会等待。
我遇到了另外一些名为"sucher_punch“的创业板,但据我从人们的消息和发布的问题中了解到,使用heroku时,由于heroku dynos的某些原因,这个gem可能会失败,邮件可能不会发送,您也不知道。
不管怎样,rails开发人员处理这个电子邮件问题的一般方法是什么?也许我也可以像上面解释的那样使用sendgrid,对吗?
发布于 2017-02-17 16:59:35
在后台发送电子邮件是一个常见的用例,Rails 4.2在ActionMailer中引入了一种ActionMailer方法来提供无缝的ActiveJob集成。
您不需要设置cron作业来检查后台队列中是否有作业。Sidekiq,Resque或DelayedJob会帮你处理这个问题。
似乎Sendgrid确实允许创建模板和发送变量内容来填充它们,但是这个特性并不会损害异步调用的好处。事实上,如果外部资源(Sendgrid)不可用,将其推迟到后台还有一个额外的好处,即不会影响用户体验。
您应该尝试安装您提到的后台处理解决方案之一(我推荐塞德基),并利用ActionMailer + ActiveJob集成。
https://stackoverflow.com/questions/42302051
复制相似问题