Rails 5.2 Net::SMTPAuthenticationError - 535 身份验证失败:发送电子邮件时禁用帐户(Localhost 和 Heroku)

Rails 5.2 Net::SMTPAuthenticationError - 535 Authentication failed: account disabled When Sending Email (Localhost and Heroku)

我正在尝试让 Rails 5.2 邮件程序正常工作,但在 localhost 和我的 Heroku production 环境中都遇到了 Net::SMTPAuthenticationError - 535 Authentication failed: account disabled 错误。

邮件看起来像这样:

class AdminNotificationsMailer < ApplicationMailer
  default from: "liz@linchpinindustries.com"

  def new_rfp(rfp)
    @rfp = rfp
    mail(
      :to => "liz@linchpinindustries.com",
      :subject => 'New RFP Alert!'
    )
  end

  def new_contact_us(contact)
    @contact = contact
    mail(
      to: "liz@linchpinindustries.com",
      subject: 'New Contact Us Submission on LPI'
    )
  end

end

在我的rfp#create action中使用触发器(对于第一个邮件程序,new_rfp):

def create
    @rfp = Rfp.new(rfp_params)

    respond_to do |format|
      if @rfp.save!
        AdminNotificationsMailer.new_rfp(@rfp).deliver
        format.html { redirect_to root_path, notice: "Thanks for your request!  We'll get back to you ASAP.  Stay tuned!" }
        format.json { render :show, status: :created, location: @rfp }
      else
        format.html { render :new }
        format.json { render json: @rfp.errors, status: :unprocessable_entity }
      end
    end
  end

我已经配置了 Sendgrid,并使用 puts 仔细检查了我的用户名和密码(在本地主机和生产环境中都是正确的)。

我的 environment.rb 中有以下内容:

ActionMailer::Base.smtp_settings = {
  :user_name => ENV["SENDGRID_USERNAME"],
  :password => ENV["SENDGRID_PASSWORD"],
  :domain => 'linchpinindustries.com',
  :address => 'smtp.sendgrid.net',
  :port => 587,
  :authentication => :plain,
  :enable_starttls_auto => true
}

我已经查阅了 this and 之类的帖子,但没有任何效果。

我正式被难住了。谁能看出为什么会出现此错误?

您的设置中的所有内容看起来都是正确的,所以这不只是

这么简单
Net::SMTPAuthenticationError - 535 Authentication failed: account disabled

您的帐户出于某种原因disabled。与 Sendgrid 检查您的帐户是否已启动并且 运行 正确。

你能测试一下这个配置吗?它正在处理我的项目。

ActionMailer::Base.smtp_settings = {
    :address => "smtp.sendgrid.net",
    :port => 465,
    :domain => "vibol.xyz",
    :ssl => true,
    :enable_starttls_auto => true,
    :authentication => :login,
    :user_name => ENV['SENDGRID_USERNAME'],
    :password => ENV['SENDGRID_PASSWORD']
  }

我收到了类似的错误消息,问题是我在我的 sendgrid 上打开了 2FA 身份验证,但没有意识到我在这样做时必须在应用程序中更新我的配置。

现在,您必须提供 username = "apikey" 而不是自定义用户名和密码,密码是您的 api 密钥

ActionMailer::Base.smtp_settings = {
  domain: 'YOUR_DOMAIN.COM',
  address:        "smtp.sendgrid.net",
  port:            587,
  authentication: :plain,
  user_name:      'apikey',
  password:       ENV['SENDGRID_API_KEY']
}

This post helped me find the solution.