使用Rails从SMTP服务器响应

当我使用Mailer.deliver方法发送电子邮件时, Mailer.deliver使用ActionMailer从Ruby on Rails中的SMTP服务器获取响应?

我找到了Actionmailer SMTP服务器响应答案,但它不起作用……任何想法?

我需要它,因为AWS SES会返回消息ID ,这是将消息链接到他们提供的退回或垃圾邮件报告的唯一方法。

如果你像这样得到smtp

 response = Mail.your_mail().deliver 

并且它没有得到你需要的响应,尝试deliver_now!

 response = Mail.your_mail().deliver_now! pp response.message 

这将显示结果:250 2.0.0 Ok:排队为3lG8S16Khmz6ZhXq

我还在Mail.rb上配置了smtp设置

 delivery_options = { user_name: 'email@server.com.br', password: 'mypassword', authentication: :login, address: 'smtp.mycompany.com.br', port: 2525, domain: 'mycompany.com.br', return_response: true } 

如果使用gem“aws-ses”,你可以获得消息ID:

 response = your_mailer.send(notification, self, *args).deliver_now! response.message_id # => "010601531c886c55-6c2f30fc-4237-4294-9029-b60b2d44a691-000000@email.amazonses.com" 

对我来说, deliver_nowdeliver_now! 以同样的方式工作

额外:如果您有可能使用设计,您也可以获得ID:

 #[app/model/user.rb] class User < ActiveRecord::Base ... # Override send_devise_notification stated in devise/REAMDE.txt def send_devise_notification(notification, *args) response = devise_mailer.send(notification, self, *args).deliver_now response.message_id #=> "010601531c8-86c...000000@email.amazonses.com" end ... end