0

我在使用纯 Ruby 发送电子邮件时遇到问题。这是我的脚本的样子:

Mail.defaults do
  delivery_method(
    :smtp,
    address: 'smtp.sendgrid.net',
    port: 587,
    user_name: 'sendgrid_username',
    password: 'sendgrid_password',
    authentication: :login,
    enable_starttls_auto: false,
    openssl_verify_mode:  "none"
  )
end

Mail.deliver do
  from     'Test Email'
  to       'user@example.com'
  subject  'Here is the image you wanted'
  body     "Test Email"
end

此脚本引发以下错误:

/Users/mateuszurbanski/.rubies/ruby-2.7.2/lib/ruby/2.7.0/net/smtp.rb:975:in `check_auth_response': 535 Authentication failed: Bad username / password (Net::SMTPAuthenticationError)

我正在使用我的 Ruby on Rails 项目之一的凭据,它们很好。有任何想法吗?

4

2 回答 2

1

Sendgrid 最近转换为 api 密钥并将拒绝普通身份验证,请参阅此处的详细信息。您的旧凭证仍然有效,但可能不会被接受。

在 sendgrid 中生成一个新的 api 密钥并使用它来代替密码。用户名将是apikey

于 2020-12-23T12:24:20.210 回答
0

不要在此配置中使用您的 SendGrid 用户名和密码,而是使用以下内容,

user_name: 'apikey',
password: '<sendgrid_api_key>',

在为 ActionMailer 定义 smtp 设置时,这对我有用,所以它也应该在这里工作。

于 2020-12-23T12:22:50.377 回答