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.
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
mail_icon.png
E-mails envoyés
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