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.
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
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). –
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). –