来自 AWS SES 的响应 Rails ActionMailer
Response from AWS SES with Rails ActionMailer
使用 Rails ActionMailer 和 :aws_sdk 作为传递方式时,如何从 AWS SES 获取消息 ID?
config.action_mailer.delivery_method = :aws_sdk
我只收到 ActionMailer 设置的消息 ID,但它被 SES 覆盖了:
response = ApplicationMailer.create_send(@message).deliver_now
puts response.message_id # => 5a1fbd6417a83_12a406a883740@28b9af04e9b9.mail
如何使用 SES 设置的实际消息 ID 从 SES 获取响应?我找到了这个 Response from SMTP server with Rails,但它对我不起作用。
我不是 ruby 方面的专家,但我认为问题出在 AWS 库上。具体来说,无法设置 return_response 设置。
在这个文件中
gems/2.3.0/gems/aws-sdk-rails-1.0.1/lib/aws/rails/mailer.rb
settings 是一个硬编码为 return 空哈希的函数。而且没有 attr_accessor 也没有初始化。
# ActionMailer expects this method to be present and to return a hash.
def settings
{}
end
并且在 message.rb 中,只有当 delivery_method.settings[:return_response] 为真时,您才能获得 smtp 响应代码。
# This method bypasses checking perform_deliveries and raise_delivery_errors,
# so use with caution.
#
# It still however fires off the interceptors and calls the observers callbacks if they are defined.
#
# Returns self
def deliver!
inform_interceptors
response = delivery_method.deliver!(self)
inform_observers
delivery_method.settings[:return_response] ? response : self
end
但是由于无法访问设置,所以无法获得响应。
所以也许可以使用 ruby 这样的技巧来覆盖 aws 库中的设置方法,但现在我只是将这一行添加到 aws 库文件中。
# ActionMailer expects this method to be present and to return a hash.
def settings
{ :return_response => true }
end
使用 Rails ActionMailer 和 :aws_sdk 作为传递方式时,如何从 AWS SES 获取消息 ID?
config.action_mailer.delivery_method = :aws_sdk
我只收到 ActionMailer 设置的消息 ID,但它被 SES 覆盖了:
response = ApplicationMailer.create_send(@message).deliver_now
puts response.message_id # => 5a1fbd6417a83_12a406a883740@28b9af04e9b9.mail
如何使用 SES 设置的实际消息 ID 从 SES 获取响应?我找到了这个 Response from SMTP server with Rails,但它对我不起作用。
我不是 ruby 方面的专家,但我认为问题出在 AWS 库上。具体来说,无法设置 return_response 设置。
在这个文件中 gems/2.3.0/gems/aws-sdk-rails-1.0.1/lib/aws/rails/mailer.rb
settings 是一个硬编码为 return 空哈希的函数。而且没有 attr_accessor 也没有初始化。
# ActionMailer expects this method to be present and to return a hash.
def settings
{}
end
并且在 message.rb 中,只有当 delivery_method.settings[:return_response] 为真时,您才能获得 smtp 响应代码。
# This method bypasses checking perform_deliveries and raise_delivery_errors,
# so use with caution.
#
# It still however fires off the interceptors and calls the observers callbacks if they are defined.
#
# Returns self
def deliver!
inform_interceptors
response = delivery_method.deliver!(self)
inform_observers
delivery_method.settings[:return_response] ? response : self
end
但是由于无法访问设置,所以无法获得响应。
所以也许可以使用 ruby 这样的技巧来覆盖 aws 库中的设置方法,但现在我只是将这一行添加到 aws 库文件中。
# ActionMailer expects this method to be present and to return a hash.
def settings
{ :return_response => true }
end