Ruby on Rails Implémentation de la fonction d'envoi automatique de courrier

Contenu

Implémentez une fonction pour envoyer automatiquement un e-mail de confirmation à l'adresse e-mail enregistrée.

la mise en oeuvre

① Créer une application

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

② Paramètres de transmission du courrier

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

③ Créer un mailer

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"

③ Modification de mailer

① 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

④ Créez le corps de l'e-mail

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.

⑥ Modifier le contrôleur

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

⑥ Modifier le routage

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

Commençons et vérifions-le à la fin!

$ 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. 9.png

C'est la fin de la mise en œuvre. Merci d'avoir regardé.

Recommended Posts

Ruby on Rails Implémentation de la fonction d'envoi automatique de courrier
Ruby on Rails Paramètre de la fonction d'envoi automatique des e-mails (avec Gmail)
[Ruby on Rails] Implémentation de la fonction de commentaire
[Ruby on Rails] Suivez l'implémentation de la fonction: bidirectionnelle
[Ruby on rails] Implémentation d'une fonction similaire
Implémentation de la fonction de connexion Ruby on Rails (Session)
Ruby on Rails Comment implémenter la saisie d'adresse automatique
Implémentation de la fonction de connexion Ruby on Rails (édition de devise)
[Ruby on Rails] Fonction de sortie CSV
[Ruby on Rails] DM, fonction de chat
[Ruby on Rails] Fonction de recherche (non sélectionnée)
[Rails] Ajout de la fonction de commentaire Ruby On Rails
[Ruby on Rails] Suppression logique (fonction de retrait)
Paramètres de validation pour la fonction de connexion Ruby on Rails
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Association Ruby On Rails
[Ruby on Rails] Fonction de post-édition (mise à jour, suppression)
[Ruby on Rails] Communication asynchrone de la fonction de publication, ajax
[Ruby on Rails] Fonction de classement des scores (affichage complet)
[Ruby on Rails] Fonction de prévisualisation de l'image dans le fichier
[Ruby on Rails] Fonction de recherche (modèle, formule de sélection de méthode)
Explication de Ruby on rails pour les débutants ⑦ ~ Implémentation Flash ~
Implémentation de la fonction de recherche floue Rails
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
Record d'apprentissage Ruby on rails -2020.10.04
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
[Rails] Implémentation de la fonction de catégorie
Record d'apprentissage Ruby on rails-2020.10.07 ①
Annuler la migration de Ruby on Rails
[Rails] Implémentation de la fonction tutoriel
Record d'apprentissage de Ruby on rails -2020.10.06
[Rails] Implémentation d'une fonction similaire
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
[Ruby on Rails] Fonction de signet (enregistrement favori, comme): une direction
Une note sur la fonction de départ de Ruby on Rails
[Ruby on Rails] Implémenter la fonction de connexion par add_token_to_users avec l'API
[Rails] Implémentation asynchrone de la fonction similaire
[Ruby on Rails] Read try (: [] ,: key)
Variables Ruby on Rails, résumé constant
Installation de Ruby + Rails sur Ubuntu 18.04 (rbenv)
[Rails] Implémentation de la fonction de prévisualisation d'image
Connaissance de base de Ruby on Rails