2017-08-06 7 views
0

Je comprends que cela a déjà été demandé et j'ai suivi Rails ActionMailer Guides ainsi que de passer en revue quelques questions connexes sur stackoverflow. Je cours un localhost et essaye d'envoyer des email de là. Des guides de rails, j'ai suivi chaque étape et vérifié tout est écrit comme dans les guides. J'ai aussi lu quelques questions trouvées ici, mais mes mails ne sont toujours pas envoyés depuis localhost. De plus, je ne reçois aucune erreur sur mon serveur.Rails Action Mailer avec Devise

config/environnements/development.rb

EDIT

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

    #Mailers 
    config.action_mailer.delivery_method = :sendmail 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.default_options = {from: '[email protected]'} 

    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     587, 
    domain:    'localhost:3000', 
    user_name:   ENV["ADMIN_EMAIL"],                             
    password:    ENV["DOG_SEEKER_GMAIL"], 
    authentication:  'plain', 
    enable_starttls_auto: true 
} 

mailers/admin_mailer.rb

Class AdminMailer < Devise::Mailer 
helper :application 
include Devise::Controllers::UrlHelpers  

Modifier

def welcome_email(admin)                                 
    @admin = admin 
    @login_url = "localhost:3000/admins/sign_in" 
    mail(to: @admin.email, subject: "Welcome to Dog Seeker!") 
end 

app/admin/admin_controllers.rb

def create 
    @admin = Admin.new(params[:admin]) 

    respond_to do |format| 
    if @admin.save 
     AdminMailer.welcome_email(@admin).deliver_now 
     format.html { redirect_to(@admin, notice: 'Admin was successfully created.') } 
     format.json { render json: @admin, status: :created, location: @admin } 
    else 
     format.html { redirect_to new_admin_registration_path } 
     format.json { render json: @admin.errors, status: :unprocessable_entity } 
    end 
    end 
end 

MISE À JOUR

Connexion lorsque de nouveaux signes admin Up

Started POST "/admins" for 127.0.0.1 at 2017-08-05 22:09:15 -0700 
Processing by Devise::RegistrationsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"<token>==", "admin"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"} 
    (0.2ms) BEGIN 
    Admin Exists (0.6ms) SELECT 1 AS one FROM "admins" WHERE "admins"."email" = $1 LIMIT $2 [["email", "[email protected]"], ["LIMIT", 1]] 
    SQL (0.6ms) INSERT INTO "admins" ("email", "encrypted_password", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["email", "[email protected]"], ["encrypted_password", "<password>"], ["created_at", "2017-08-06 05:09:15.904920"], ["updated_at", "2017-08-06 05:09:15.904920"]] 
    (2.0ms) COMMIT 
    (0.1ms) BEGIN 
    SQL (0.5ms) UPDATE "admins" SET "sign_in_count" = $1, "current_sign_in_at" = $2, "last_sign_in_at" = $3, "current_sign_in_ip" = $4, "last_sign_in_ip" = $5, "updated_at" = $6 WHERE "admins"."id" = $7 [["sign_in_count", 1], ["current_sign_in_at", "2017-08-06 05:09:15.909337"], ["last_sign_in_at", "2017-08-06 05:09:15.909337"], ["current_sign_in_ip", "127.0.0.1/32"], ["last_sign_in_ip", "127.0.0.1/32"], ["updated_at", "2017-08-06 05:09:15.909955"], ["id", 29]] 
    (0.5ms) COMMIT 
Redirected to http://localhost:3000/ 
Completed 302 Found in 172ms (ActiveRecord: 4.5ms) 


Started GET "/" for 127.0.0.1 at 2017-08-05 22:09:15 -0700 
Processing by HomepagesController#index as HTML 
    Rendering homepages/index.html.erb within layouts/application 
    Rendered homepages/index.html.erb within layouts/application (0.5ms) 
    Admin Load (0.7ms) SELECT "admins".* FROM "admins" WHERE "admins"."id" = $1 ORDER BY "admins"."id" ASC LIMIT $2 [["id", 29], ["LIMIT", 1]] 
    Rendered shared/_header.html.erb (5.5ms) 
    Rendered shared/_main.html.erb (1.0ms) 
Completed 200 OK in 18ms (Views: 16.2ms | ActiveRecord: 0.7ms) 

Une autre mise à jour

J'ai un autre logiciel de messagerie que est envoyé quand un chien est creat ed et cela fonctionne bien de localhost et avec toutes les configurations ci-dessus. Ma conjecture est la raison pour laquelle les expéditeurs n'enverront pas quand un compte d'admin est créé est dû au contrôleur d'enregistrements de machine en surchargeant mon contrôleur. En d'autres termes, il ne frappe pas mon action de création dans admin_controller, mais frappe l'enregistrement au sein du contrôleur d'enregistrement des appareils.

S'il vous plaît laissez-moi savoir si vous avez besoin d'informations supplémentaires.

+1

De mon utilisation passée d'ActionMailer, je ne crois pas que l'email sera envoyé par développement. Regardez vos journaux et vous devriez voir l'email là. – hashrocket

+1

Je pense que ça devrait aller. Nous avons besoin des journaux pour voir comment les choses sont déclenchées. Cependant, je recommanderais d'utiliser Mailhog ou mailcatcher (le dernier est un bijou et les deux sont disponibles dans Docker afin qu'ils ne gâchent pas votre environnement). –

+0

Il y a quelque chose qui a attiré mon attention dans votre code au dessus de '@login_url =" https://dogseeker.herokuapp.com/admins/sign_in "' alors que vous définissez réellement l'URL de votre environnement de développement 'config.action_mailer '. default_url_options = {hôte: 'localhost', port: 3000} '. Donc je ne comprends pas si votre question concerne un environnement de développement ou de production (test ou mise en scène). –

Répondre

0

A dû suivre le guide de Devise Wiki et était capable de le faire fonctionner quand les admins s'inscrivent.