Bonsoir à tous. M'étant reconverti dans la programmation avec RoR, je suis confronté à un problème.
Je fais un test d'envoi d'email en local avec ActionMailer, en utilisant les données d'un formulaire de contact. Pour rappel, j'utilise MailDev comme gestionnaire d'email local.
Le problème, c'est que quand je j'appuie sur le bouton envoyé, mon message flash me dit que l'email est envoyé alors que je ne reçois rien dans MailDev.
Voici le code des différents fichiers:
Fichier development.rb
Fichier contact.html.erb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # In the development environment your application's code is reloaded on # every request. This slows down response time but is perfect for development # since you don't have to restart the web server when you make code changes. config.cache_classes = false # Do not eager load code on boot. config.eager_load = false # Show full error reports. config.consider_all_requests_local = true # Enable/disable caching. By default caching is disabled. if Rails.root.join('tmp/caching-dev.txt').exist? config.action_controller.perform_caching = true config.cache_store = :memory_store config.public_file_server.headers = { 'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}" } else config.action_controller.perform_caching = false config.cache_store = :null_store end # Don't care if the mailer can't send. config.action_mailer.raise_delivery_errors = false config.action_mailer.perform_caching = false # Print deprecation notices to the Rails logger. config.active_support.deprecation = :log # Raise an error on page load if there are pending migrations. config.active_record.migration_error = :page_load # Debug mode disables concatenation and preprocessing of assets. # This option may cause significant delays in view rendering with a large # number of complex assets. config.assets.debug = true # Suppress logger output for asset requests. config.assets.quiet = true # Raises error for missing translations # config.action_view.raise_on_missing_translations = true # Use an evented file watcher to asynchronously detect changes in source code, # routes, locales, etc. This feature depends on the listen gem. # config.file_watcher = ActiveSupport::EventedFileUpdateChecker config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: 'localhost', port: 1025, domain: 'localhost' } end
Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <h1>Contact form</h1> <%= form_tag "/contact", method: "post" do %> <input type="text" name="name" placeholder="Votre nom"/><br><br> <input type="email" name="email" placeholder="Votre email"/><br><br> <textarea name="message" placeholder="Votre message"></textarea><br><br> <input type="submit" value="Envoyer"/> <% end %>
Fichier contact_mailer.rb
Controller pages
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class ContactMailer < ApplicationMailer def contact(user_name,user_email,user_message) @user_name = user_name @user_email = user_email @user_message = user_message mail(to: user_name, subject: "Member inscription") end end
Fichier Routes.rb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class PagesController < ApplicationController def contact end def create ContactMailer.contact(params[:name], params[:email], params[:message]).deliver_now flash[:info] = "Message envoyé" redirect_to root_path end end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Rails.application.routes.draw do root 'pages#contact' post 'contact' => 'pages#create' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
Partager