Электронная почта Rails SendGrid из среды разработки

Мы используем SendGrid в производственном приложении, и он отлично работает. Однако недавно мы пытались протестировать новую функцию / электронную почту в стадии разработки и, похоже, не можем получить электронное письмо для отправки. Есть идеи, где мы ошибаемся? Мы используем функции, аналогичные производственным, и мы также следовали руководству по внедрению SendGrid. Такое ощущение, что я упускаю что-то простое!

Сначала я экспортировал SENDGRID_USERNAME и SENDGRID_PASSWORD и для удовольствия добавил в свой .bash_profile

export SENDGRID_USERNAME=xxxxxxx
export SENDGRID_PASSWORD=xxxxxxx

Я подтвердил в консоли, что они существуют и верны.

Создал developer_email.html.erb файл:

<p>Hi! Sendgrid test</p>

И DeveloperMailer файл:

class DeveloperMailer < ActionMailer::Base
  default from: "[email protected]"

  def developer_email(developer_id)
    @recipients = ["[email protected]"] 
    mail(to: @recipients, subject: 'Does sendgrid work?')
  end
end

Обновлен файл development.rb:

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.delivery_method = :smtp

  config.action_mailer.smtp_settings = {
  address:              'smtp.sendgrid.net',
  port:                 '587',
  domain:               'localhost:3000',
  user_name:            ENV['SENDGRID_USERNAME'],
  password:             ENV['SENDGRID_PASSWORD'],
  authentication:       :plain,
  enable_starttls_auto: true  } 

Когда я иду отправить электронное письмо в консоли, оно действует так, как будто оно было отправлено, но на самом деле электронное письмо никогда не приходит:

DeveloperMailer.developer_email (1) # для отправки электронного письма. Кажется, работает:

2.3.1 :001 > DeveloperMailer.developer_email(1)
  Rendered developer_mailer/developer_email.html.erb (1.5ms)

DeveloperMailer#developer_email: processed outbound mail in 133.3ms
 => #<Mail::Message:70263824429080, Multipart: false, Headers: <From: [email protected]>, <To: ["[email protected]"]>, <Subject: Does SendGrid Work?>, <Mime-Version: 1.0>, <Content-Type: text/html>> 

#But I never get anything sent to my email

Есть идеи, что мне может не хватать?

ИЗМЕНИТЬ

Обновлен файл development.rb:

config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.delivery_method = :smtp

  config.action_mailer.smtp_settings = {
  address:              'smtp.sendgrid.net',
  domain:               'example.com',
  user_name:            ENV['SENDGRID_USERNAME'],
  password:             ENV['SENDGRID_PASSWORD'],
  authentication:       :plain,
  enable_starttls_auto: true  } 

Электронной почты по-прежнему нет.


person Tom Hammond    schedule 04.01.2017    source источник
comment
Привет, Том, Вы нашли решение для вышеуказанного вопроса? если да, то, если возможно, опубликуйте свой ответ, потому что у меня такая же проблема   -  person shehzad lakhani    schedule 18.09.2019
comment
Так что я определенно заставил его работать. Но весь мой код выглядит так же, как указано выше. К сожалению, прошло несколько лет с тех пор, как я прикоснулся к нему, и не могу вспомнить, что делал. Возможно, мне пришлось изменить настройку в самой sendgrid. Я бы изучил там, особенно по ссылке активности, размещенной ниже bwest   -  person Tom Hammond    schedule 19.09.2019


Ответы (3)


Сначала выполните telnet, выполнив следующие команды

telnet smtp.sendgrid.net 2525

Если вы получили правильный ответ от службы SMTP, измените SMTP port from 587 to 2525

В моем случае "порт 587" не отвечает

После смены порта у меня работает

person shehzad lakhani    schedule 30.09.2019

domain в этом контексте - это SMTP HELO домен, а не домен фактической среды. Измените его на тот же домен, который вы используете в своем профиле SendGrid, и не указывайте порт, а попробуйте.

person bwest    schedule 04.01.2017
comment
Вы видите что-нибудь в своей активности SendGrid на странице app.sendgrid.com/email_activity? - person bwest; 04.01.2017
comment
Вообще ничего. - person Tom Hammond; 04.01.2017

Вам нужно будет подтвердить адрес электронной почты отправителя или домен отправителя, прежде чем вы сможете отправить электронное письмо с помощью SendGrid. См. https://sendgrid.com/docs/ui/sending-email/sender-verification/ и https://sendgrid.com/docs/for-developers/sending-email/sender-identity/#domain-authentication

person Joshua Ugba    schedule 29.09.2020