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.
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()
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é.
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