1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| # -*- coding: utf-8 -*-
# la lib smtp qui nous permet de dialoguer avec un serveur de mail
import smtplib
# un email multipart (contient des pieces jointes)
from email.MIMEMultipart import MIMEMultipart
# un message email de type text
from email.MIMEText import MIMEText
# un message email de type image
from email.MIMEImage import MIMEImage
import mimetypes, posixpath
def image_a_mail(cheminfichier):
''' renvois un message de type MIMEImage a partir d'un fichier'''
# on utilise posixpath pour avoir le nom du fichier
nomfichier = posixpath.basename( cheminfichier )
# puis pour obtenir l'extension du fichier
extension = posixpath.splitext( nomfichier )
# puis mimetypes pour avoir le content-type de l'extension
content_type = mimetypes.types_map[ extension ]
# on ouvre le fichier image en mobe binaire
fichier = open(cheminfichier, 'rb')
# un objet message avec le contenu du fichier
# un objet message avec le contenu du fichier
image = MIMEImage( fichier.read() )
# on ajoute les headers pour l'image
image.add_header('Content-Disposition','inline; filename="%s"' % filename)
image.add_header('Content-type',content_type)
# on retourne l'objet message contenant l'image
return image
def send(mfrom,mto):
# on creer un objet message multipart
emailmultipart = MIMEMultipart()
# on ajoute les headers pour le mail principal
email['From']=mfrom
email['To']=mto
email['Subject']='Bonjour !'
# on creer un message simple en html (la classe ! ;)
emailtext = MIMEText('<b>Bonjour !</b>','html')
# on attache ce mail a notre multipart
emailmultipart.attach(emailtext)
# on creer un message de type MIMEImage a l'aide de notre fonction
emailimage = image_a_mail('image.jpg')
# on attache ce mail a notre multipart
emailmultipart.attach(emailimage)
# on envoit le mail
server = smtplib.SMTP('localhost')
server.sendmail(mfrom,
mto,
emailmultipart.as_string() )
server.quit()
if __name__ == '__main__':
send('expediteur@example.com',
'destinataire@example') |
Partager