2015-01-10 1 views
0

Несколько недель назад я создал почтовый объект для отправки электронной почты всякий раз, когда была создана новая «Вещь». Он работал без сучка и задоринки, но затем я прокомментировал соответствующие строки и не занимался этим некоторое время. Сегодня я попробовал еще раз, и ничего не случилось. Я обнаружил, что учетная запись электронной почты, которую я использовал, по какой-то причине была отключена, поэтому я попробовал ее с другой учетной записью электронной почты. Еще ничего. Кто-нибудь может предположить, почему это может быть не так, или как я могу его отладить? Я уверен, что имя пользователя/пароль/домен верны.Mailer перестает работать после переключения сообщений электронной почты

конфигурации/среда/development.rb

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    address: 'smtp.gmail.com', 
    port: 587, 
    domain: 'gmail.com', 
    user_name: 'username', 
    password: 'password', 
    authentication: 'plain', 
    enable_starttls_auto: true 
} 

приложение/отправители/user_mailer.rb

class UserMailer < ActionMailer::Base 
    default from: '[email protected]' 

    def notify(user) 
    @user = user 
    mail(to: @user.email,subject: "Notification") 
    end 
end 

приложение/просмотров/user_mailer/notify.html.erb

<html> 
    <head> 
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' /> 
    </head> 
    <body> 
    <h1>Heading</h1> 
    <p>First paragraph</p> 
    <p>Second paragraph</p> 
    </body> 
</html> 

приложение/контроллеры/users_controller.rb

def create 
    #... 
    UserMailer.notify(@user).deliver 
end 
+0

Do у вас есть тест/спецификация, чтобы проверить, что письмо отправлено, а контент/атрибуты - как ожидалось? Это лучший способ проверить работу почтовой программы; лучше, чем пытаться вручную инициировать электронную почту. Возможно, электронные письма все еще отправляются, но некоторые проблемы с smtp локально подавляют его. Кроме того, работает ли почтовая программа на производстве? –

+0

Возможно, вам нужно включить доступ к вашему приложению в конфигурации электронной почты, почему бы вам не попробовать? http://stackoverflow.com/a/26374624/3851249 –

+0

добавить символ помех для доставки и сообщить нам, что такое ошибка? и письма не будут продаваться в коробке справа ..? – Nithin

ответ

1

Попробуйте это:

config.action_mailer.delivery_method = :smtp 
config.action_mailer.default_url_options = { host:'localhost', port: '3000' } 
config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 
config.action_mailer.default :charset => "utf-8" 
config.action_mailer.smtp_settings = { 
    address: 'smtp.gmail.com', 
    port: 587, 
    domain: 'localhost:3000', 
    user_name: '[email protected]', 
    password: 'password', 
    authentication: 'plain', 
    enable_starttls_auto: true 
} 
+0

Он работает, спасибо! Но я не понимаю, как мой код работал до этого, если я неправильно заполнил поля domain и user_name ... –

0

при тестировании в окр разработки, добавьте ниже строки и проверить
config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true

+0

Могу ли я добавить эти строки в любом месте в моей среде/development.rb? –

+0

да, добавьте эти строки, где у вас есть доступ (или область доступа к конфигурации). –

+0

Что я должен проверять? –