Implémentez une fonction pour envoyer automatiquement un e-mail de confirmation à l'adresse e-mail enregistrée.
Créez une application appelée sample.
$ rails new sample
Déplacer le répertoire.
$ cd sample
Nous allons créer une application à envoyer à l'adresse e-mail nouvellement ajoutée, alors créez une table utilisateur. Cette fois, nous aurons deux colonnes.
$ rails g scaffold User name email
Créez une base de données.
$ rails db:migrate
Je vais le configurer pour que je puisse envoyer Gmail. ①config/environments/development.rb ②config/environments/production.rb Veuillez ajouter ce qui suit à ① et ②.
Rails.application.configure do
config.action_mailer.raise_delivery_errors = true #Passer de faux à vrai
#Omission#
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
domain: 'smtp.gmail.com',
port: 587,
user_name: Rails.application.credentials.gmail[:user_name],
password: Rails.application.credentials.gmail[:password],
authentication: 'login',
enable_starttls_auto: true
}
end
Il joue un rôle de contrôleur dans l'envoi de courrier.
Le nom du mailer est SampleMailer.
$ rails g mailer SampleMailer
Une fois exécutés, les deux mailers suivants seront créés sous app / mailers.
① application_mailer "Paramétrage de tout le mailer" ② sample_mailer "Paramétrage d'un mailer individuel appelé SampleMailer créé précédemment"
① application_mailer "Paramétrage de tout le mailer"
app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: "Yamada Taro", #Nom de l'expéditeur
reply_to: Rails.application.credentials.gmail[:user_name] #Adresse e-mail de l'expéditeur
layout 'mailer'
end
② sample_mailer "Paramètres de messagerie individuels"
app/mailers/sample_mailer.rb
class PostMailer < ApplicationMailer
default from: "Yamada Taro"
def published_email(user)
@user = user
mail to: user.email #Adresse e-mail nouvellement enregistrée
end
end
Le corps de l'e-mail est créé sous app / views / sample_mailer. Il existe deux types de corps d'e-mail, «version HTML» et «version texte».
Cette fois, nous allons créer cela. ① published_email.html.erb "Version HTML" ② published_email.tex.erb "version texte"
html:app/views/sample_mailer/published_email.html.erb
<!doctype html>
<html lang="ja">
<head>
<meta content="text/html; charset=UTF-8" />
</head>
<body>
<h2><%= @user.name %>m</h2>
<hr />
<p>
salut!<%= @user.name %>San!</p>
<hr />
</body>
</html>
html:app/views/sample_mailer/published_email.text.erb
===============================
<%= @user.name %>m
===============================
salut!<%= @user.name %>M.
Ajoutez une ligne à la "méthode de création" du contrôleur.
app/controllers/users_controller.rb
class UsersController < ApplicationController
#Omission
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
SampleMailer.published_email(@user).deliver #Ajoute ça.
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
#Omission
end
Enfin, définissez le routage et vous avez terminé.
config/routes.rb
Rails.application.routes.draw do
resources :users
root "users#index" #Ajoute ça.
end
$ rails s
L'écran sortira comme ça! Veuillez faire fonctionner et vérifier.
Si vous enregistrez votre nom et votre adresse e-mail, un e-mail sera envoyé automatiquement.
C'est la fin de la mise en œuvre. Merci d'avoir regardé.
Recommended Posts