Ceci est un résumé lorsque j'enquêtais parce que je voulais envoyer gmail avec python. Juste un mémo.
À peu près la même que la référence ci-dessous,
Les photos d'un répertoire spécifique sont lues et envoyées à plusieurs reprises.
Référence: https://qiita.com/numaC/items/076474934a3bb45647bd
Merci pour le site de référence.
La conclusion est la suivante. Cependant, je pense que dans la plupart des cas, vous obtiendrez un "SMTPAuthenticationError". Veuillez vous y référer dans la section "Contenu" ci-dessous.
sendmail.py
import os
import glob
from smtplib import SMTP
from email.mime.text import MIMEText
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
def sendGmailAttach():
sender, password = "[email protected]", "testtest" #Adresse e-mail de l'expéditeur et informations de connexion pour Gmail
to = '[email protected]' #Adresse e-mail de destination
sub = 'Envoi de courrier de test' #Sujet du courriel
body = 'L'image est jointe.' #le contenu de l'e-mail
host, port = 'smtp.gmail.com', 587
#En-tête de courrier
msg = MIMEMultipart()
msg['Subject'] = sub
msg['From'] = sender
msg['To'] = to
#le contenu de l'e-mail
body = MIMEText(body)
msg.attach(body)
#Partie supplémentaire
fetch_from_dir = glob.glob(os.getcwd() + "\img/*")
fetch_from_dir_len = len(fetch_from_dir)
len_cnt = 0
for target_list in fetch_from_dir:
print(target_list)
#Paramètres des fichiers joints
attach_file = {
'name': os.path.basename(target_list),
'path': target_list
} #nom est le nom du fichier joint. chemin spécifie l'emplacement du fichier joint
attachment = MIMEBase('image', 'png')
file = open(attach_file['path'], 'rb+')
attachment.set_payload(file.read())
file.close()
encoders.encode_base64(attachment)
attachment.add_header("Content-Disposition", "attachment", filename=attach_file['name'])
msg.attach(attachment)
#Connectez-vous à Gmail(Utilisé comme serveur SMTP)
gmail=SMTP("smtp.gmail.com", 587)
gmail.starttls() #Crypter les commandes de communication SMTP et passer l'authentification d'accès au serveur
gmail.login(sender, password)
gmail.send_message(msg)
len_cnt += 1
print('Courrier' + str(len_cnt) + '/' + str(fetch_from_dir_len) + 'Envoyé')
if __name__ == '__main__':
sendGmailAttach()
print('Tous les e-mails ont été envoyés')
Résultat d'exécution
$ python sendmail.py
C:\Users\hogehoge\img\1.jpg
Courriel 1/3 envoyés
C:\Users\hogehoge\img\2.jpg
Courriel 2/3 envoyés
C:\Users\hogehoge\img\3.jpg
Courriel 3/3 envoyés
Tous les e-mails ont été envoyés
Vous obtiendrez probablement l'erreur suivante lorsque vous exécuterez le programme:
smtplib.SMTPAuthenticationError: (535, ‘5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials
Ceci est résolu du côté de gmail comme "utiliser le mot de passe de l'application".
Ce qui suit est un site de référence. Merci beaucoup.
Référence: https://www.gocca.work/python-mailerror/
J'écrirai une procédure approximative, mais pour plus de détails, consultez le site de référence.
-Étape 1: après vous être connecté à votre compte Google
-Étape 2: configuration du "processus d'authentification en deux étapes"
-Étape 3: Générer un "mot de passe d'application"
Puisque je l'ai noté comme méthode pour le moment, la gestion des erreurs, etc. ne suffit pas, veuillez donc prendre les mesures appropriées.
Recommended Posts