Einstellungen für die Google Mail-App
Wechseln Sie nach dem Anmelden bei Google zu Nächste URL.
Der Bildschirm wechselt zum folgenden Bild. Aktivieren Sie daher den zweistufigen Authentifizierungsprozess und aktivieren Sie ihn. Erstellen Sie ein App-Passwort. Notieren Sie sich irgendwo das App-Passwort.
import smtplib
import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate
from email.mime.image import MIMEImage
class Mail:
def __init__(self):
setting_ini_dict = read_text_ini('setting_mail.ini')
mail_dict = setting_ini_dict['mail']
self.mail_address = mail_dict['address']
self.mail_type = mail_dict['type']
self.mail_password = mail_dict['password']
self.api_url = '{URL, die Sie ausführen möchten, wenn Sie die Taste drücken}'
def send_mail(self, to_addr, msg):
smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login(self.mail_address, self.mail_password)
smtpobj.sendmail(self.mail_address, to_addr, msg.as_string())
smtpobj.close()
def create_mail(self, to_address, subject, body_msg, uuid):
api_url = self.api_url + f'?auth_key={uuid}'
body_msg = body_msg.replace('@mail_api@', api_url)
msg = MIMEMultipart('alternative')
msg.attach(MIMEText(body_msg, 'html'))
with open('qiita_logo.png', 'rb') as img:
logo_img = MIMEImage(img.read())
logo_img.add_header('Content-ID', '<logo_image>')
with open('mail_icon.png', 'rb') as img:
mail_img = MIMEImage(img.read())
mail_img.add_header('Content-ID', '<mail_image>')
msg.attach(logo_img)
msg.attach(mail_img)
msg['Subject'] = subject
msg['From'] = self.mail_address
msg['To'] = to_address
msg['Date'] = formatdate()
return msg
def read_text(file_path):
s = ""
with open(file_path, encoding="utf-8") as f:
s = f.read()
# print(s)
return s
def read_text_ini(file_path):
"""
Lesen aus der INI-Datei
Args:
file_path:Pfad zur Datei+Dateiname
Returns:
ini_dic:In der INI-Datei beschriebene Zeichenfolge vom Typ Wörterbuch
"""
import configparser
ini_dict = configparser.ConfigParser()
ini_dict.read(file_path, 'UTF-8')
return ini_dict
mail = Mail()
to_address = '{E-Mail-Adresse, die Sie senden möchten}'
subject = 'E-Mail-Titel'
body_msg = read_text('mail_format.html')
uuid = 'testetesfsdf'
msg = mail.create_mail(to_address, subject, body_msg, uuid)
mail.send_mail(to_address, msg)
mail_format.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>E-Mail-Authentifizierungsbildschirm</title>
</head>
<body>
<img style="width: 100px;"
src="cid:logo_image">
<div style="background-color: #d9d9d9; width: 80%; margin: 2% 5% 10% 0; padding: 30px;">
<p style="text-align: center;"><img style="width: 50px;" src="cid:mail_image"></p>
<h2 style="padding-left: 4%">Bitte überprüfen Sie Ihre E-Mail-Adresse</h2>
<hr style="border:0; border-top:dashed; width: 96%;">
<p style="padding-left: 4%">Bitte klicken Sie auf diese Schaltfläche, um Ihre E-Mail-Adresse zu bestätigen.<br>Danke für Ihre Kooperation.</p>
<p style="text-align: center">
<a style="position: relative;
display: inline-block;
padding: 0.25em 0.5em;
text-decoration: none;
color: #FFF;
background: #03A9F4;/*Farbe*/
border: solid 1px #0f9ada;/*Linienfarbe*/
border-radius: 4px;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
text-shadow: 0 1px 0 rgba(0,0,0,0.2);" href="@mail_api@">E-Mails abrufen</a>
</p>
<hr style="border:0; border-top:dashed; width: 96%;">
<p style="padding-left: 4%">Bei Fragen wenden Sie sich bitte an den Support.</p>
</div>
<div style="text-align: center">
<p>Sie können auf diese E-Mail nicht antworten.<br>
qiita.com Ltd. Qiita <br>
<a href="https://qiita.com">qiita.com</a> <br>
<a href="#">Datenschutz-Bestimmungen</a>
</p>
</div>
</body>
</html>
setting_mail.ini
# setting_mail.ini
[mail]
type = gmail
address = {Die zuvor festgelegte Google Mail-Adresse}
password = {Das zuvor gespeicherte Passwort}
qiita_logo.png
mail_icon.png
E-Mails gesendet
Ich konnte eine HTML-E-Mail mit Python und Google Mail senden. Senden mit base64 durch Einfügen eines lokalen Bildes in HTML und Senden usw. Heutzutage gibt es einige Beschreibungen von Methoden, die nicht ausgeführt werden können, deshalb habe ich sie kurz zusammengefasst!