UPDATE: Я получил его, чтобы отправлять электронные письма, фактически получая доступ к моему приложению через веб-сайт heroku, но он все еще не работает, когда я запускаю приложение с рабочего сервера в моем облако9 идеал. Это нормально? Это то, как учебник хочет, чтобы я это сделал?Hartl Ruby on Rails Tutorial - Sendgrid не отправляет электронное письмо в производство
В главе 11 учебного пособия Майкла Хартла Ruby on Rails вам предлагается зарегистрироваться для примера приложения в режиме развертывания с помощью электронного письма, которое вы контролируете, и проверить свою учетную запись электронной почты для электронного письма активации учетной записи. Я не получал никаких писем и надписей sendgrid для отчетов heroku, которые не были отправлены по электронной почте. Тем не менее, в консоли cloud 9 ide puma сервер сообщает, что письмо было отправлено с правильным форматом, на правильный адрес, и я могу получить токен активации и адрес электронной почты с консоли. Я не уверен, что я делаю неправильно. Надеемся, что все соответствующие коды включены ниже. Пожалуйста помоги.
Я действительно отправился на сайт примера приложения и нажал регистрацию, а затем ждал электронного письма. Разве это не то, что означает Хартл, «подписываясь на новую учетную запись в производстве»?
конфигурации/environment.rb:
# Load the Rails application.
require_relative 'application'
# Initialize the Rails application.
Rails.application.initialize!
#Sendgrid configurations from their website
ActionMailer::Base.smtp_settings = {
:user_name =>ENV['SENDGRID_USERNAME'],
:password =>ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com',
:address => 'smtp.sendgrid.net',
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true
}
мейлеры/application_mailer:
class ApplicationMailer < ActionMailer::Base
default from: '[email protected]'
layout 'mailer'
end
сред/production.rb:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
host = 'gentle-lake-88943.herokuapp.com'
config.action_mailer.default_url_options = { host: host }
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com',
:enable_starttls_auto => true
}
users_controller.rb:
def create
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = "Please check your email to activate your account"
redirect_to root_url
else
render 'new'
end
end
user.rb:
def activate
update_columns(activated: true, activated_at: Time.zone.now)
end
def send_activation_email
UserMailer.account_activation(self).deliver_now
end
routes.rb:
resources :account_activations, only: [:edit]
у вас есть активное [Sendgrid] (https://sendgrid.com/ счет)? –
Я, да. Это «дополнение» к приложению heroku, которое я использую вместе с учебным пособием для развертывания. Когда я обращаюсь к его панели управления, он говорит 0 запросов на электронные письма. –
Вы помещали «SENDGRID_USERNAME» и «SENDGRID_PASSWORD» в «Heroku» с консоли (или по-другому)? –