发送电子邮件失败时的HTTP状态代码

时间:2019-01-09 23:32:43

标签: ruby-on-rails json rest http

注意:我已经读过this,但是我仍然不知道如何正确构建发送电子邮件功能,所以我问这个问题。我需要知道在电子邮件发送成功/失败时使用的HTTP状态代码,或者如果这不是正确的选择,那么正确的选择。

对我的rails应用程序的POST请求将发送一封电子邮件。

如果电子邮件发送失败,我应该向JSON响应中发送POST请求的人返回什么HTTP状态代码?

  def inform
    delivered = true
    begin
      UserMailer.new_comment(current_user, other_user, @note).deliver_now
    rescue Net::SMTPAuthenticationError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError
      delivered = false
    end

    if delivered
      # I use :created here because email is created
      render json: { delivered: true }.to_json, status: :created
    else
      # I use :service_unavailable here because email sending failed
      render json: { delivered: false }.to_json, status: :service_unavailable
    end
  end

2 个答案:

答案 0 :(得分:1)

502

bad_gateway

通常用于上游服务器故障。

这里有更多信息:https://airbrake.io/blog/http-errors/502-bad-gateway-error

  

502网关错误错误表示您(客户端)所连接的服务器上游的服务器出现故障。在这种情况下,这意味着提供502 Bad Gateway Error的服务器将充当网关

答案 1 :(得分:0)

我宁愿使用代码 424 https://tools.ietf.org/html/rfc4918#section-11.4

<块引用>

424(Failed Dependency)状态代码意味着该方法可以 由于请求的操作,不会对资源执行 依赖于另一个操作并且该操作失败了。例如,如果一个 PROPPATCH 方法中的命令失败,然后,至少,其余的 命令也将失败,并显示 424(依赖关系失败)。