mail html avec image à envoyer avec python

environnement

une fonction

1. Paramètres et codage 1

paramètres de l'application Gmail

Une fois connecté à Google, accédez à URL suivante

L'écran changera pour l'image ci-dessous, alors activez le processus d'authentification en 2 étapes et activez-le. Créez un mot de passe d'application. Notez le mot de passe de l'application quelque part.

image (9).png

2. Paramètres et codage 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 que vous souhaitez exécuter lorsque vous appuyez sur le bouton}'

    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):
    """
Lecture à partir d'un fichier ini
    Args:
        file_path:Chemin d'accès au fichier+nom de fichier

    Returns:
        ini_dic:Chaîne de caractères de type dictionnaire décrite dans le fichier ini
    """
    import configparser
    ini_dict = configparser.ConfigParser()
    ini_dict.read(file_path, 'UTF-8')
    return ini_dict


mail = Mail()
to_address = '{Adresse e-mail que vous souhaitez envoyer}'
subject = 'Titre de l'e-mail'
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>Écran d'authentification des e-mails</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%">Veuillez vérifier votre adresse e-mail</h2>
    <hr style="border:0; border-top:dashed; width: 96%;">
    <p style="padding-left: 4%">Veuillez cliquer sur ce bouton pour confirmer votre adresse e-mail.<br>Merci de votre collaboration.</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;/*Couleur*/
  border: solid 1px #0f9ada;/*Couleur de la ligne*/
  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@">Vérifier le courriel</a>
    </p>
    <hr style="border:0; border-top:dashed; width: 96%;">
    <p style="padding-left: 4%">Si vous avez des questions, veuillez contacter le support.</p>
</div>
<div style="text-align: center">
    <p>Vous ne pouvez pas répondre à cet e-mail.<br>
        qiita.com Ltd. Qiita <br>
        <a href="https://qiita.com">qiita.com</a> <br>
        <a href="#">politique de confidentialité</a>
    </p>

</div>

</body>
</html>

setting_mail.ini

# setting_mail.ini

[mail]
type = gmail
address = {L'adresse Gmail que vous avez définie précédemment}
password = {Le mot de passe que vous avez enregistré précédemment}

qiita_logo.png

qiita-logo.png

mail_icon.png mail_icon.png

E-mails envoyés

qiita_mail.png

Résumé

J'ai pu envoyer un e-mail html en utilisant python et gmail. Envoi avec base64 en mettant une image locale en html et en l'envoyant, etc. De nos jours, il existe des descriptions de méthodes qui ne peuvent pas être exécutées, je les ai donc résumées brièvement!

Recommended Posts

mail html avec image à envoyer avec python
Envoyer des e-mails par Python
Envoyer du courrier japonais avec Python3
Envoyez un email à l'adresse de Spushi avec python
[Automation] Envoyer des e-mails Outlook avec Python
[Python] Envoyez des e-mails avec Outlook
Envoyer l'image avec python et enregistrer avec php
Envoyer des e-mails via gmail avec Python 3.4.3.
[Python] Envoyer un e-mail
[Python] Envoyer un e-mail
Introduction au remplissage d'image Python Remplissage d'image à l'aide d'ImageDataGenerator
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Envoyer un e-mail avec Amazon SES + Python
Exemple de conversion en ondelettes d'images en Python
Envoyer des e-mails avec Django
Traitement d'image avec Python
Valider l'e-mail avec Python
Envoyer un message à LINE avec Python (LINE Notify)
Convertir un PDF en image (JPEG / PNG) avec Python
Comment recadrer une image avec Python + OpenCV
Exemple de notification Slack avec python lambda
Envoyer un e-mail avec Excel en pièce jointe en Python
Que faire si vous ne parvenez pas à envoyer un e-mail à Yahoo avec Python.
Envoyer des e-mails à une adresse e-mail spécifique avec python sans paramétrer SMTP
Traitement d'image avec Python (partie 2)
Connectez-vous à BigQuery avec Python
Comment récupérer des données d'image de Flickr avec Python
Édition d'image avec python OpenCV
Connectez-vous à Wikipedia avec Python
Publiez sur Slack avec Python 3
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
Convertissez l'image au format .zip en PDF avec Python
Traitement d'image avec Python (partie 1)
Envoyer des e-mails avec Python (Outlook)
Tweet avec image en Python
Tri des fichiers image avec Python
Traitement d'image avec Python (3)
Basculer python vers 2.7 avec des alternatives
Écrire en csv avec Python
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
Envoyer en utilisant Python avec Gmail
[Python] Traitement d'image avec scicit-image
J'ai essayé de trouver l'entropie de l'image avec python
[Python] Envoyer gmail avec python: envoyez un par un avec plusieurs fichiers image en pièce jointe
Comment installer NPI + envoyer un message à la ligne avec python
[Python] Envoyez un e-mail depuis Gmail avec le paramètre d'authentification en deux étapes
J'ai essayé différentes méthodes pour envoyer du courrier japonais avec Python
[Ev3dev] Comment afficher une image bmp sur un écran LCD avec python
[Jouons avec Python] Traitement d'image en monochrome et points
Envoyer des notifications push aux applications iOS avec Python2 (avec un exemple de code)
Convertir .ipynb en .html (avec BatchFile)
Découpez une image avec python
Python: comment utiliser async avec
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Lien pour commencer avec python
[Python] Ecrire dans un fichier csv avec Python
[Python] Utilisation d'OpenCV avec Python (transformation d'image)