Я пытаюсь отправить электронное письмо на [email protected] с помощью Action Mailer (Ruby on Rails). Метод sendactivation корректно выполняется и отображается сообщение «Отправлено по электронной почте». Однако я никогда не получаю никаких писем. Фактически, выход «Тест» никогда не печатается. Мой webapp размещен на Heroku Cedar-10.Отправленные письма с помощью действия Mailer
class UsersController < ApplicationController
def sendactivation
UserMailer.welcome_email()
render :json => {
:result => "Email sent"
}
end
end
end
class UserMailer < ActionMailer::Base
def welcome_email()
mail(to: "[email protected]",
body: "Hello",
content_type: "text/html",
subject: "Already rendered!")
puts "Test"
end
end
Это конфигурация, которая у меня есть в моей конфигурации/environment/production.rb. На самом деле я хотел отправить его в Office 365, но я полагаю, что его легче отлаживать с помощью учетной записи Gmail.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
user_name: '[email protected]',
password: '########',
authentication: 'plain',
enable_starttls_auto: true }
Что я делаю неправильно? Нужно ли мне что-то менять в моей конфигурации Gmail?
ANSWER: В дополнение к отмеченному ответу мне нужно было установить адрес «from» в методе welcome_email.
Вы можете временно установить 'config.action_mailer.raise_delivery_errors = true' и проверить на наличие ошибок в ваших журналах. Отдельно я столкнулся с [этой статьей] (http://blog.mailgun.com/tips-tricks-avoiding-gmail-spam-filtering-when-using-ruby-on-rails-action-mailer/) о настройке сообщения ID для Gmail, который может стоить прочитать. В крайнем случае вы можете [настроить Gmail] (https://support.google.com/accounts/answer/6010255?hl=ru), чтобы разрешить доступ к менее безопасному приложению. –