Dies ist eine Zusammenfassung, als ich nachforschte, weil ich Google Mail mit Python senden wollte. Nur ein Memo.
Etwa das gleiche wie die Referenz unten,
Die Fotos in einem bestimmten Verzeichnis werden wiederholt gelesen und gesendet.
Referenz: https://qiita.com/numaC/items/076474934a3bb45647bd
Vielen Dank für die Referenzseite.
Die Schlussfolgerung lautet wie folgt. Ich denke jedoch, dass Sie in den meisten Fällen einen "SMTPAuthenticationError" erhalten. Bitte beziehen Sie sich darauf aus dem Abschnitt "Inhalt" unten.
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" #E-Mail-Adresse des Absenders und Anmeldeinformationen für Google Mail
to = '[email protected]' #Ziel-E-Mail-Adresse
sub = 'Testmail senden' #E-Mail Betreff
body = 'Das Bild ist beigefügt.' #den Inhalt der E-Mail
host, port = 'smtp.gmail.com', 587
#Mail-Header
msg = MIMEMultipart()
msg['Subject'] = sub
msg['From'] = sender
msg['To'] = to
#den Inhalt der E-Mail
body = MIMEText(body)
msg.attach(body)
#Zusätzlicher Teil
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)
#Angehängte Dateieinstellungen
attach_file = {
'name': os.path.basename(target_list),
'path': target_list
} #name ist der angehängte Dateiname. Pfad gibt den Speicherort der angehängten Datei an
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)
#Stellen Sie eine Verbindung zu Google Mail her(Wird als SMTP-Server verwendet)
gmail=SMTP("smtp.gmail.com", 587)
gmail.starttls() #Verschlüsseln Sie SMTP-Kommunikationsbefehle und übergeben Sie die Serverzugriffsauthentifizierung
gmail.login(sender, password)
gmail.send_message(msg)
len_cnt += 1
print('Mail' + str(len_cnt) + '/' + str(fetch_from_dir_len) + 'Geschickt')
if __name__ == '__main__':
sendGmailAttach()
print('Alle E-Mails wurden gesendet')
Ausführungsergebnis
$ python sendmail.py
C:\Users\hogehoge\img\1.jpg
E-Mail 1/3 gesendet
C:\Users\hogehoge\img\2.jpg
E-Mail 2/3 gesendet
C:\Users\hogehoge\img\3.jpg
E-Mail 3/3 gesendet
Alle E-Mails wurden gesendet
Beim Ausführen des Programms wird wahrscheinlich der folgende Fehler angezeigt:
smtplib.SMTPAuthenticationError: (535, ‘5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials
Dies wird auf der Google Mail-Seite als "App-Passwort verwenden" behoben.
Das Folgende ist eine Referenzseite. Vielen Dank.
Referenz: https://www.gocca.work/python-mailerror/
Ich werde eine grobe Prozedur schreiben, aber für Details siehe die Referenzseite.
-Schritt 1: Nachdem Sie sich bei Ihrem Google-Konto angemeldet haben
-Schritt 2: Richten Sie den "2-Schritt-Authentifizierungsprozess" ein.
-Schritt 3: Generieren Sie "App-Passwort"
Da ich es vorerst als Methode aufgeschrieben habe, reicht die Fehlerbehandlung usw. nicht aus. Ergreifen Sie daher bitte geeignete Maßnahmen.