mercredi 27 juillet 2016

[Python] Envoi d'un email

1. Le but

Comprendre l'envoie d'un message et d'une pièce jointe via un script en Python 3.4. L'IDE étant Visual Studio 2015.

2. Pourquoi

J'imagine ma station Raspberry Pi, équipée de sa caméra et de divers capteurs. Lorsque l'un de  ces capteurs se déclenchent, la Raspberry acquiert une image et me la transmet par mail.

import os
import sys
import mimetypes
import smtplib

import email
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

import time
import datetime

# Paramètres
adresse = 'votre_adresse@gmail.com'
mdp = 'votre_password'

# En tête message
msg = MIMEMultipart()
msg['From'] = adresse
msg['To'] = adresse
msg['Subject'] = 'Home Alerte'
# Message
today = datetime.date.today()
message = 'Detection le : ' + str(today)
msg.attach(MIMEText(message))
# Piece jointe
fp = open('lien_complet_de_l_image.jpg', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
msgImage.add_header("Content-Disposition", "form-data", name = "intrusion.jpg", filename = "intrusion.jpg")
msg.attach(msgImage)

mailserver = smtplib.SMTP('smtp.gmail.com',587)
mailserver.ehlo()
mailserver.starttls()
mailserver.ehlo()
mailserver.login(adresse, mdp)

# Tentative d'envoie du mail
try:
    mailserver.sendmail(
adresse,adresse,msg.as_string())
    print("Envoi Ok")
except Exception:
    print("Erreur envoi")
mailserver.quit()

# Pause en secondes puis auto quitte de l'app
time.sleep(5)
sys.exit(0)