Implementieren Sie eine Funktion zum automatischen Senden einer Bestätigungs-E-Mail an die registrierte E-Mail-Adresse.
Erstellen Sie eine App namens sample.
$ rails new sample
Verzeichnis verschieben.
$ cd sample
Wir erstellen eine App, die an die neu hinzugefügte E-Mail-Adresse gesendet werden soll. Erstellen Sie daher eine Benutzertabelle. Dieses Mal werden wir zwei Spalten haben.
$ rails g scaffold User name email
Erstellen Sie eine Datenbank.
$ rails db:migrate
Ich werde es so einstellen, dass ich Google Mail senden kann. ①config/environments/development.rb ②config/environments/production.rb Bitte fügen Sie Folgendes zu ① und ② hinzu.
Rails.application.configure do
config.action_mailer.raise_delivery_errors = true #Wechseln Sie von falsch zu wahr
#Unterlassung#
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
Es spielt eine Rolle als Controller beim Senden von E-Mails.
Der Name des Mailers lautet SampleMailer.
$ rails g mailer SampleMailer
Bei der Ausführung werden die folgenden zwei Mailer unter App / Mailer erstellt.
① application_mailer "Einstellung des gesamten Mailers" ② sample_mailer "Einstellung eines einzelnen Mailers namens SampleMailer, der zuvor erstellt wurde"
① application_mailer "Einstellung des gesamten Mailers"
app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: "Yamada Taro", #Name des Absenders
reply_to: Rails.application.credentials.gmail[:user_name] #E-Mail-Adresse des Absenders
layout 'mailer'
end
② sample_mailer "Individuelle Mailer-Einstellungen"
app/mailers/sample_mailer.rb
class PostMailer < ApplicationMailer
default from: "Yamada Taro"
def published_email(user)
@user = user
mail to: user.email #Neu registrierte E-Mail-Adresse
end
end
Der Text der E-Mail wird unter app / views / sample_mailer erstellt. Es gibt zwei Arten von E-Mail-Text, "HTML-Version" und "Textversion".
Dieses Mal werden wir dies schaffen. ① Published_email.html.erb "HTML-Version" ② shared_email.tex.erb "Textversion"
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 %>Herr</h2>
<hr />
<p>
Hallo!<%= @user.name %>San!</p>
<hr />
</body>
</html>
html:app/views/sample_mailer/published_email.text.erb
===============================
<%= @user.name %>Herr
===============================
Hallo!<%= @user.name %>Herr.
Fügen Sie der "create method" des Controllers eine Zeile hinzu.
app/controllers/users_controller.rb
class UsersController < ApplicationController
#Unterlassung
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
SampleMailer.published_email(@user).deliver #Füge das hinzu.
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
#Unterlassung
end
Stellen Sie schließlich das Routing ein und Sie sind fertig.
config/routes.rb
Rails.application.routes.draw do
resources :users
root "users#index" #Füge das hinzu.
end
$ rails s
Der Bildschirm wird so herauskommen! Bitte tatsächlich bedienen und prüfen.
Wenn Sie Ihren Namen und Ihre E-Mail-Adresse registrieren, wird automatisch eine E-Mail gesendet.
Dies ist das Ende der Implementierung. Danke fürs Zuschauen.
Recommended Posts