Почему я получаю: для отправки сообщения требуется адрес SMTP To. Msgstr "Установить сообщение smtp_envelope_to, to, cc или bcc address."?

Я слежу за книгой по изучению Ruby on Rails Дэниэла Кехо, и когда я пытаюсь отправить почту, я получаю следующую ошибку.

ArgumentError at / contacts Адрес SMTP To требуется для отправки сообщения. Установите сообщение smtp_envelope_to, to, cc или bcc address.

Чем лучше ошибки, указывает на UserMailer.contact_email(@contact).deliver в контроллере контактов.

Я провел некоторое исследование и до ошибки следовал инструкции книги по настройке переменных среды в моем файле.bash_profile.

Любая помощь с благодарностью.

Обновить

Согласно ответам, спасибо. Я уже установил почту (для:)

def contact_email(contact)
  @contact = contact
  mail(to: Rails.application.secrets.owner_email, from: @contact.email, :subject => "Website Contact")
end

И я установил настройки SMTP:

config.action_mailer.smtp_settings = {
  address: "smtp.gmail.com",
  port: 587,
  domain: Rails.application.secrets.domain_name,
  authentication: "plain",
  enable_starttls_auto: true,
  user_name: Rails.application.secrets.email_provider_username,
  password: Rails.application.secrets.email_provider_password
}

Обновление 2

Благодарю. Найдите секреты ниже:) Я исключил базу секретных ключей здесь

development:
  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  domain_name: example.com
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
  owner_email: <%= ENV["OWNER_EMAIL"] %>
  secret_key_base: 'my secret key_base'


test:
  secret_key_base: 'my secret key_base'

production:
  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  domain_name: <%= ENV["DOMAIN_NAME"] %>
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
  owner_email: <%= ENV["OWNER_EMAIL"] %>
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

1 ответ

Решение

Через какую-то детективную работу я наткнулся на решение, которое требовало только перезагрузки терминала.

Проблема описана выше. Ранее я заполнил следующие переменные среды в моем файле.bash_profile.

export GMAIL_USERNAME="my_email@gmail.com"
export GMAIL_PASSWORD="my_password"
export MAILCHIMP_API_KEY="my mail_chimp_api_key"
export MAILCHIMP_LIST_ID="my mail_chimp_list_id"
export OWNER_EMAIL="my_email@gmail.com"

Но приложение не могло как-то получить доступ к этим переменным.

Я наткнулся и набрал следующую команду в терминале

> env

В нем перечислены все переменные среды в вашей компьютерной среде. (Я думаю)

В любом случае я видел переменные выше, которые я установил, что означало, что мои переменные были установлены правильно, и только приложение не могло получить доступ к переменным.

После еще нескольких копаний я наткнулся на этот пост, в котором говорилось о перезапуске терминала.

Я попробовал это, и это сработало.

Извлеченный урок заключается в том, что, когда я изменяю переменные среды, я должен перезапустить свой терминал.

Я надеюсь, что это помогает другим.

Другие вопросы по тегам