Voici la version modifiée d'Oli
pour python 3
import smtplib
from pathlib import Path
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
from email import encoders
def send_mail(send_from, send_to, subject, message, files=[],
server="localhost", port=587, username='', password='',
use_tls=True):
"""Composer et envoyer un email avec les informations fournies et les pièces jointes.
Args:
send_from (str): nom de l'expéditeur
send_to (list[str]): nom(s) du/des destinataire(s)
subject (str): titre du message
message (str): corps du message
files (list[str]): liste des chemins des fichiers à attacher à l'email
server (str): nom d'hôte du serveur de messagerie
port (int): numéro de port
username (str): nom d'utilisateur d'authentification du serveur
password (str): mot de passe d'authentification du serveur
use_tls (bool): utiliser le mode TLS
"""
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = COMMASPACE.join(send_to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach(MIMEText(message))
for path in files:
part = MIMEBase('application', "octet-stream")
with open(path, 'rb') as file:
part.set_payload(file.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',
'attachment; filename={}'.format(Path(path).name))
msg.attach(part)
smtp = smtplib.SMTP(server, port)
if use_tls:
smtp.starttls()
smtp.login(username, password)
smtp.sendmail(send_from, send_to, msg.as_string())
smtp.quit()
6 votes
Voici une mise en œuvre simple qui peut attacher plusieurs fichiers, et même les mentionner dans le cas des images à intégrer. datamakessense.com/…
0 votes
J'ai trouvé cela utile drupal.org/project/mimemail/issues/911612, il s'avère que les pièces jointes d'images doivent être attachées à une partie enfant de type lié. Si vous attachez l'image à la partie MIME racine, les images peuvent apparaître dans la liste des éléments attachés et être prévisualisées dans des clients comme Outlook365.
0 votes
@AdrianBR Et si j'ai une image au format PDF. Les fichiers PNG ont des problèmes de pixels lors du zoom, donc les PNG ne me conviennent pas.