2016-07-27 2 views
4

Я пытаюсь создать простой блог (используя рельсы 5) и хочу отправлять обновления по электронной почте, когда пользователям, когда я отправляю что-то новое. Я пытаюсь использовать actionmailer, и я использую программу для регистрации пользователей. Сначала я пытаюсь настроить его только с первого пользователя.Action mailer not send/receive email rails 5

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

UserNotifierMailer#sample_email: processed outbound mail in 410.4ms 
Sent mail to [email protected] (853.2ms) 
Date: Wed, 27 Jul 2016 12:05:33 +0100 
From: [email protected] 
To:[email protected] 
Message-ID: <[email protected]me.mail> 
Subject: Sample Email 
Mime-Version: 1.0 
Content-Type: multipart/alternative; 
boundary="--==_mimepart_5798957d951e2_ae813ff962abfe1466312"; 
charset=UTF-8 
Content-Transfer-Encoding: 7bit 

Мой контроллер сообщений выглядит следующим образом:

def create 
    @user = User.first 
    @post = current_user.posts.build(post_params) 
    if @post.save 
     flash[:success] = "Your post has been created!" 
     UserNotifierMailer.sample_email(@user).deliver 
     redirect_to posts_path 
    else 
     flash[:alert] = "Your new post couldn't be created! Please check the form." 
     render :new 
    end 
    end 

Моя почтовая программа выглядит следующим образом:

class UserNotifierMailer < ApplicationMailer 
    default from: "[email protected]" 
    def sample_email(user) 
    @user = user 
    @url = 'http://www.google.com' 
    mail(to: @user.email, subject: 'Sample Email') 
    end 
end 

и в моем development.rb у меня есть следующие настройки:

config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } 

    config.action_mailer.delivery_method = :smtp 

    config.action_mailer.smtp_settings = { 
    address: "smtp.gmail.com", 
    port: 587, 
    domain: "gmail.com", 
    authentication: "plain", 
    enable_starttls_auto: true, 
    user_name: "my_gmail_username", 
    password: "my_gmail_password" 
    } 
+0

Попробуйте изменить эту функцию в вашем аккаунте Google (не уверен, если это поможет): https://www.google. com/settings/security/lesssecureapps – Deep

+0

Я, наконец, получил его работу, это было связано с проверкой 2-го шага Google. Убедитесь, что он выключен! –

ответ

2

В настроенном Gmail a ccount:

  1. Перейти к Настройки учетной записи Чем

  2. Перейти к входа в & безопасности, а затем Connected приложений & сайты

  3. Наконец, в Разрешить меньше безопасные приложения ... Проверьте это.

Проверить раз и попробуйте

0
config.action_mailer.raise_delivery_errors = true 
config.action_mailer.perform_deliveries = true 
... 
config.action_mailer.delivery_method = :smtp 

Я не конфиг какой-либо из указанных выше и он все еще работает.

config.action_mailer.default_url_options = { host: 'localhost:3000' } 

и должны .deliver_later или .deliver_now, .deliver не работает

+0

Я завернул код выше в blockquotes, так как вы, кажется, ссылаетесь на код в вопросе. Если это неверно, вы можете развернуть изменения из [истории изменений] (http://stackoverflow.com/posts/40966354/revisions) или [изменить] сообщение, чтобы внести дальнейшие улучшения. Я понятия не имею, что означает последнее предложение. –

Смежные вопросы