Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails AWS SES对Rails ActionMailer的响应_Ruby On Rails_Amazon Web Services_Aws Sdk_Actionmailer_Amazon Ses - Fatal编程技术网

Ruby on rails AWS SES对Rails ActionMailer的响应

Ruby on rails AWS SES对Rails ActionMailer的响应,ruby-on-rails,amazon-web-services,aws-sdk,actionmailer,amazon-ses,Ruby On Rails,Amazon Web Services,Aws Sdk,Actionmailer,Amazon Ses,使用Rails ActionMailer with:AWS_sdk作为传递方法时,如何从AWS SES获取消息id config.action_mailer.delivery_method = :aws_sdk 我只获取ActionMailer设置的消息id,但该id会被SES覆盖: response = ApplicationMailer.create_send(@message).deliver_now puts response.message_id # => 5a1fbd6417

使用Rails ActionMailer with:AWS_sdk作为传递方法时,如何从AWS SES获取消息id

config.action_mailer.delivery_method = :aws_sdk
我只获取ActionMailer设置的消息id,但该id会被SES覆盖:

response = ApplicationMailer.create_send(@message).deliver_now
puts response.message_id # => 5a1fbd6417a83_12a406a883740@28b9af04e9b9.mail

如何使用SES设置的实际消息id从SES获取响应?我找到了这个,但它对我不起作用。

我不是ruby方面的专家,但我认为问题在于AWS库。特别是由于无法设置return_response设置

在这个文件中 gems/2.3.0/gems/aws-sdk-rails-1.0.1/lib/aws/rails/mailer.rb

settings是一个硬编码的函数,用于返回空哈希。没有attr_访问器,也没有初始化

  # ActionMailer expects this method to be present and to return a hash.
  def settings
    {}
  end
在message.rb中,只有当delivery\u method.settings[:return\u response]为true时,才能获取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技巧(如prepend)覆盖aws库中的settings方法,但现在我只是将这一行添加到aws库文件中

  # ActionMailer expects this method to be present and to return a hash.
  def settings
    { :return_response => true }
  end

我不是ruby方面的专家,但我认为问题在于AWS库。特别是由于无法设置return_response设置

在这个文件中 gems/2.3.0/gems/aws-sdk-rails-1.0.1/lib/aws/rails/mailer.rb

settings是一个硬编码的函数,用于返回空哈希。没有attr_访问器,也没有初始化

  # ActionMailer expects this method to be present and to return a hash.
  def settings
    {}
  end
在message.rb中,只有当delivery\u method.settings[:return\u response]为true时,才能获取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技巧(如prepend)覆盖aws库中的settings方法,但现在我只是将这一行添加到aws库文件中

  # ActionMailer expects this method to be present and to return a hash.
  def settings
    { :return_response => true }
  end

我可以使用
Net::SMTP::response
获得响应,就像使用:SMTP作为传递方法,并设置
返回响应:true
。虽然这不是最可选的解决方案。我可以使用
Net::SMTP::response
获得响应,就像使用:SMTP作为传递方法,并设置
返回响应:true
。尽管这不是最可选的解决方案。