HTML-Mail mit Bild zum Senden mit Python

Umgebung

Funktion

1. Einstellungen und Codierung 1

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.

image (9).png

2. Einstellungen und Codierung 2

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

qiita-logo.png

mail_icon.png mail_icon.png

E-Mails gesendet

qiita_mail.png

Zusammenfassung

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!

Recommended Posts

HTML-Mail mit Bild zum Senden mit Python
Mail per Python senden
Senden Sie japanische Post mit Python3
Senden Sie eine E-Mail mit Python an Spushis Adresse
[Automatisierung] Senden Sie Outlook-E-Mails mit Python
[Python] Mail mit Outlook senden
Sende Bild mit Python und speichere mit PHP
Senden Sie E-Mails über Google Mail mit Python 3.4.3.
[Python] Mail senden
[Python] Mail senden
Einführung in das Auffüllen von Python-Bildern Auffüllen von Bildern mit ImageDataGenerator
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
Senden Sie eine E-Mail mit Amazon SES + Python
Beispiel für die Wavelet-Konvertierung von Bildern in Python
Mail mit Django senden
Bildverarbeitung mit Python
Überprüfen Sie die E-Mail mit Python
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
So beschneiden Sie ein Bild mit Python + OpenCV
Beispiel für eine Slack-Benachrichtigung mit Python Lambda
Senden Sie eine E-Mail mit Excel in Python
Was tun, wenn Sie mit Python keine E-Mail an Yahoo senden konnten?
Senden Sie E-Mails mit Python an eine bestimmte E-Mail-Adresse, ohne SMTP festzulegen
Bildverarbeitung mit Python (Teil 2)
Stellen Sie mit Python eine Verbindung zu BigQuery her
So kratzen Sie Bilddaten von Flickr mit Python
Bildbearbeitung mit Python OpenCV
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3
Sortieren von Bilddateien mit Python (2)
Sortieren von Bilddateien mit Python (3)
Konvertieren Sie das Bild in .zip mit Python in PDF
Bildverarbeitung mit Python (Teil 1)
Mail senden mit Python (Outlook)
Tweet mit Bild in Python
Bilddateien mit Python sortieren
Bildverarbeitung mit Python (3)
Schalten Sie Python mit Alternativen auf 2.7 um
Schreiben Sie mit Python in csv
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
Senden Sie mit Python mit Google Mail
[Python] Bildverarbeitung mit Scicit-Image
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Python] Google Mail mit Python senden: Senden Sie eins nach dem anderen mit mehreren angehängten Bilddateien
So installieren Sie NPI + Senden Sie eine Nachricht an Python
[Python] Senden Sie eine E-Mail aus Google Mail mit einer zweistufigen Authentifizierungseinstellung
Ich habe verschiedene Methoden ausprobiert, um japanische Post mit Python zu senden
[Ev3dev] So zeigen Sie ein BMP-Bild mit Python auf dem LCD an
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
Senden Sie Push-Benachrichtigungen mit Python2 an iOS-Apps (mit Beispielcode).
Konvertieren Sie .ipynb in .html (mit BatchFile)
Schneiden Sie ein Bild mit Python aus
Python: So verwenden Sie Async mit
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Link, um mit Python zu beginnen
[Python] Mit Python in eine CSV-Datei schreiben
[Python] Verwenden von OpenCV mit Python (Bildtransformation)