2016-07-27 14 views
4

Ich versuche, ein einfaches Blog zu erstellen (mit Schienen 5) und E-Mail-Updates senden möchten, wenn ich neue Benutzer poste. Ich versuche Actionmailer zu verwenden und benutze Devise, um Benutzer zu registrieren. Ich versuche es zunächst nur mit dem ersten Benutzer einzurichten.Aktion Mailer nicht senden/Empfangen von E-Mail-Schienen 5

Wenn ich auf meinen lokalen Server schaue, scheint die E-Mail zu senden, aber sie wird nicht empfangen. Jeder Rat wäre sehr willkommen, ich bin eine Weile stecken geblieben.

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 

Meine Beiträge Controller sieht wie folgt aus:

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 

Mein Mailer sieht wie folgt aus:

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 

und in meinem development.rb Ich habe diese Einstellungen:

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

Versuchen Sie, diese Funktion zu ändern auf auf Ihrem Google-Konto (nicht sicher, ob es hilft): https://www.google. com/settings/security/lesssecureapps – Deep

+0

Ich habe es endlich funktioniert, es war mit Google 2-Schritt-Überprüfung zu tun. Stellen Sie sicher, dass es ausgeschaltet ist! –

Antwort

2

In Ihrem konfigurierten Google Mail-Konto a ccount:

  1. Zum Kontoeinstellungen als

  2. Zum Sign-in & Sicherheit, gefolgt von Connected Apps & Websites

  3. Endlich in weniger zulassen sichere Apps ... Überprüfen Sie es.

prüfen Once And Versuchen

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

ich Config nicht eine der oben genannten und es funktioniert immer noch.

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

und müssen .deliver_later oder .deliver_now, .deliver arbeiten nicht

+0

Ich habe den obigen Code in blockquotes eingepackt, da Sie auf den Code in der Frage zu verweisen scheinen. Wenn dies nicht der Fall ist, können Sie die Änderungen aus dem [Überarbeitungsverlauf] (http://stackoverflow.com/posts/40966354/revisions) oder dem [Post] bearbeiten, um weitere Verbesserungen vorzunehmen. Ich habe keine Ahnung, was der letzte Satz bedeutet. –