Envoyer des e-mails depuis Gmail avec Ruby

introduction

En tant que tâche pratique de rédaction d'un programme lors de la session d'étude à laquelle je participe, il existe un thème d'envoi d'un e-mail avec ruby, et le contenu de la mise en œuvre est décrit ci-dessous.

Au fait, c'est un programme envoyé depuis gmail que j'utilise habituellement.

C'était un problème alors qu'il y avait une limite de temps, alors je l'ai fait à la hâte, mais j'ai été aidé en ayant plus de références et de bibliothèques que ce à quoi je m'attendais.

Environnement de mise en œuvre, ce dont vous avez besoin

Procédure de mise en œuvre

Obtenir le mot de passe de l'application Google

Pour l'authentification lors de l'envoi d'un e-mail à partir de l'application, au lieu d'utiliser le mot de passe du compte Google tel quel, authentifiez-vous à l'aide du mot de passe d'application émis dans les paramètres du compte Google. (Méthode recommandée pour la sécurité plutôt que d'utiliser le mot de passe tel quel)

Account settings

À partir de l'écran ci-dessus, sélectionnez «Sécurité» -> «Mot de passe de l'application», sélectionnez Application: Mail, Appareil (mac dans mon cas), puis appuyez sur le bouton Générer pour afficher le mot de passe de l'application.

Installer la gemme ruby-gmail

Heureusement, ruby a un bijou pour envoyer gmail, donc je vais l'utiliser.

dcparker/ruby-gmail

gem install ruby-gmail

ruby-gmail gem semble être intéressant car il a diverses fonctions telles que la lecture et l'édition des mails reçus en plus d'envoyer simplement des mails.

Définition des variables d'environnement (adresse gmail, mot de passe d'application)

Du point de vue de la sécurité, l'adresse gmail et le mot de passe de l'application obtenus précédemment doivent être définis dans la variable d'environnement au lieu d'être solidement écrits dans le programme, et doivent être obtenus par le programme.

export GMAIL_ID="L'adresse Gmail que vous souhaitez envoyer"
export GMAIL_PASS="mot de passe de l'application Gmail"

Reflète les variables d'environnement définies.

source ~/.bash_profile

Créer un programme d'envoi d'e-mails

Cette fois, vous pouvez entrer n'importe quelle adresse de destination, sujet et corps sur la commande.

require "gmail"

USERNAME = ENV[ "GMAIL_ID" ]
PASSWORD = ENV[ "GMAIL_PASS"]

gmail = Gmail.new(USERNAME, PASSWORD)

puts "Veuillez saisir l'adresse de destination"
address_to = gets.chomp
puts "Veuillez entrer un sujet"
title = gets.chomp
puts "Veuillez saisir le texte"
text = gets

message =
  gmail.generate_message do
    to address_to
    subject title
    html_part do
      content_type "text/html; charset=UTF-8"
      body "<p>" + text + "</p>" 
    end
  end

gmail.deliver(message)
gmail.logout

Article de référence

J'y ai fait référence pour la majeure partie du programme. Je suis très reconnaissant.

[[Ruby] Envoyer un e-mail avec un compte Gmail - Note de programmation de TakBoy](https://csharpmagazine.hatenablog.com/entry/2019/12/13/%E3%80%90Ruby%E3%80%91Gmail%E3%82% A2% E3% 82% AB% E3% 82% A6% E3% 83% B3% E3% 83% 88% E3% 81% A7% E3% 83% A1% E3% 83% BC% E3% 83% AB% E9% 80% 81% E4% BF% A1)

Recommended Posts

Envoyer des e-mails depuis Gmail avec Ruby
Ruby: envoyer des e-mails avec Starttls
Envoyer un e-mail avec une pièce jointe PDF via JavaMail
[Spring Boot] Envoyer un e-mail
Envoyer du courrier avec Spring Boot
Je souhaite envoyer manuellement un e-mail d'autorisation avec Devise
[Java] Envoyer un e-mail à l'aide d'Amazon SES
Envoyer des e-mails à l'aide de JavaMail sur AWS
Je souhaite envoyer un e-mail en Java.
Envoyer un e-mail lorsque le journal de niveau d'ERREUR se produit avec SMTP Appender de logback
Comment sortir le standard d'un tableau avec for Each
Premiers pas avec Ruby
De Java à Ruby !!
Evolve Eve avec Ruby
J'ai fait un interpréteur (compilateur?) Avec environ 80 lignes en Ruby.
Ruby on Rails Paramètre de la fonction d'envoi automatique des e-mails (avec Gmail)
[Version 2020] Comment envoyer un e-mail à l'aide d'Android Studio Javamail
Qu'advient-il des variables d'instance lors de la copie d'une instance avec ruby
Ruby / rexml: tournez chacun avec un élément du même nom