Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python

Cette fois, j'écrirai sur la façon d'envoyer automatiquement un e-mail avec un fichier joint en utilisant Python et l'API Gmail.

Envoyer Gmail avec du code Python

J'écrirai le code pour envoyer un e-mail avec un fichier joint. Les fichiers joints seront "Hello .txt" dans le répertoire du document. Veuillez créer le fichier joint à l'avance.

La forme complétée du code est la suivante.

import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import base64
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from apiclient import errors
from os.path import basename

#Définir la portée de l'API Gmail
SCOPES = ['https://www.googleapis.com/auth/gmail.send']

#Créer le contenu de l'e-mail
msg = MIMEMultipart()

#Création du corps de l'e-mail
def create_message(sender, to_email, subject, message_text):
    #Destination de l'e-mail
    msg['to'] = to_email
    #Expéditeur de l'e-mail
    msg['from'] = sender
    #Titre de l'e-mail(matière)
    msg['subject'] = subject
    #Pièce jointe
    msg.attach(MIMEText(message_text))
    
    encode_message = base64.urlsafe_b64encode(msg.as_bytes())
    return {'raw': encode_message.decode()}

#Envoyer un mail
def send_message(service, user_id, message):
    try:
        message = (service.users().messages().send(userId=user_id, body=message)
                   .execute())
        print('Message Id: %s' % message['id'])
        return message
    except errors.HttpError as error:
        print('An error occurred: %s' % error)

#Traitement principal
def main():
    #Obtenez un jeton d'accès
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server()
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)
    service = build('gmail', 'v1', credentials=creds)
    #Création du corps de l'e-mail
    sender = '*****@gmail.com' #L'adresse de l'expéditeur
    to_email = '*****@gmail.com' #Adresse du destinataire
    subject = 'Test d'automatisation de l'envoi d'e-mails'
    message_text = 'Nous testons l'automatisation de l'envoi de courrier.'
    
    #Pièce jointe
    path = "Documents/Bonjour.txt"
    with open(path, "rb") as f:
        part = MIMEApplication(
            f.read(),
            Name=basename(path)
        )
    part['Content-Disposition'] = 'attachment; filename="%s"' % basename(path)
    msg.attach(part)
    
        
    message = create_message(sender, to_email, subject, message_text)
    #Appelez l'API Gmail pour envoyer un e-mail
    send_message(service, 'me', message)

#Exécution du programme
if __name__ == '__main__':
    main()

Exécution du programme

Lorsque vous exécutez le programme ci-dessus, l'écran de sélection de compte Google apparaît pour la première fois. Alors, veuillez sélectionner le compte pour envoyer le mail.

Lorsque vous sélectionnez un compte, une boîte de dialogue vous demandant si vous souhaitez autoriser l'octroi des droits d'utilisation de Gmail s'affiche. Cliquez sur Autoriser.

Un écran de confirmation de votre sélection apparaîtra, alors cliquez sur Autoriser de la même manière.

Lorsque l'utilisateur s'authentifie, le message «Le flux d'authentification est terminé, vous pouvez fermer cette fenêtre.» S'affiche dans le navigateur.

Ceci termine la transmission du courrier. Veuillez vérifier si l'e-mail est arrivé.

Résumé

J'ai expliqué comment automatiser l'envoi de courrier. Cette fois, un e-mail a été envoyé, mais si vous le développez, vous pouvez envoyer plusieurs e-mails à la fois. Si vous envoyez des courriels similaires à chaque fois dans votre travail quotidien, veuillez vous y référer.

Recommended Posts

Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
Envoyez un email à l'adresse de Spushi avec python
Envoyer un e-mail avec Excel en pièce jointe en Python
Envoyer en utilisant Python avec Gmail
Exportez le rapport au format PDF à partir de DB avec Python et attachez-le automatiquement à un e-mail et envoyez-le
[Python] Envoyez des e-mails avec Outlook
[Python] Créer une API pour envoyer Gmail
Envoyer des e-mails via gmail avec Python 3.4.3.
[Python] Envoyez un e-mail depuis Gmail avec le paramètre d'authentification en deux étapes
Un moyen simple d'accéder à l'API produit Amazon en Python
Essayez d'utiliser l'API Wunderlist en Python
mail html avec image à envoyer avec python
[Version septembre 2020] Explique la procédure d'utilisation de l'API Gmail avec Python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Tweet à l'aide de l'API Twitter en Python
Envoyer un e-mail avec Amazon SES + Python
Comment envoyer une requête à l'API DMM (FANZA) avec python
Créez une application qui recherche uniquement à l'aide de l'API de recherche personnalisée Google avec Python 3.3.1 dans Bottle
J'ai essayé de rendre possible l'envoi automatique d'un e-mail en double-cliquant simplement sur l'icône [Python]
Que faire si vous ne parvenez pas à envoyer un e-mail à Yahoo avec Python.
Essayez d'envoyer un e-mail avec la bibliothèque cliente de l'API Gmail pour Java
Pièces jointes par e-mail à l'aide de votre compte gmail avec python.
Je souhaite envoyer un e-mail depuis Gmail en utilisant Python.
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Essayez d'utiliser l'API DropBox Core avec Python
Envoyer des e-mails par Python
Envoyer Gmail en Python
J'ai essayé de rendre possible l'envoi automatique d'un e-mail en double-cliquant simplement sur l'icône [GAS / Python]
Je souhaite envoyer Gmail avec Python, mais je ne peux pas en raison d'une erreur
Continuez à récupérer des tweets contenant des mots-clés spécifiques à l'aide de l'API Streaming en Python
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
Convertissez l'image au format .zip en PDF avec Python
J'ai essayé d'expliquer comment obtenir le contenu de l'article avec l'API MediaWiki d'une manière facile à comprendre avec des exemples (Python 3)
Envoyer du courrier japonais avec Python3
Envoyer des e-mails avec Python (Outlook)
Télécharger en tant que données ouvertes à l'aide de l'API CKAN en Python et lier automatiquement avec les actions Github
Appelez l'API avec python3.
La première API à créer avec le framework Python Djnago REST
Comment manipuler le DOM dans iframe avec Selenium
Code pour envoyer du courrier basé sur la liste de diffusion Excel
Une introduction à l'API de socket moderne pour apprendre en C
Précautions lors de l'utilisation de Python avec AtCoder
Choses à garder à l'esprit lors de l'utilisation de cgi avec python.
Essayez de déchiffrer les caractères déformés dans le nom du fichier joint avec Python
Comment se connecter à AtCoder avec Python et soumettre automatiquement
[boto3] Envoyer un e-mail à l'aide de SES
Obtenir l'API arXiv en Python
Frappez l'API Sesami en Python
[Automation] Envoyer des e-mails Outlook avec Python
Dans la commande python, python pointe vers python3.8
Accédez à l'API Etherpad-lite avec Python
Créez Gmail en Python sans utiliser l'API
Accédez à l'API Web en Python
Remarque: envoyer un e-mail avec Django
Accéder à l'API Twitter avec Python
Une alternative à `pause` en Python
Comment connaître la structure interne d'un objet en Python
Créez un alias pour Route53 vers CloudFront avec l'API AWS