Sunteți pe pagina 1din 2

Envoyer un mail par SMTP en python

Nous allons voir dans ce chapitre comment envoyer un mail en SMTP avec la
library smtplib .

gmail
Prenons l'exemple d'une adresse gmail , dans notre cas l'adresse sera XXX@gmail.com

# coding: utf-8

import smtplib

from email.MIMEMultipart import MIMEMultipart

from email.MIMEText import MIMEText

msg = MIMEMultipart()

msg['From'] = 'XXX@gmail.com'

msg['To'] = 'YYY@gmail.com'

msg['Subject'] = 'Le sujet de mon mail'

message = 'Bonjour !'

msg.attach(MIMEText(message))

mailserver = smtplib.SMTP('smtp.gmail.com', 587)

mailserver.ehlo()

mailserver.starttls()

mailserver.ehlo()

mailserver.login('XXX@gmail.com', 'PASSWORD')

mailserver.sendmail('XXX@gmail.com', 'XXX@gmail.com', msg.as_string())

mailserver.quit()

Ce code est indépendant de la configuration de votre serveur. Pas besoin d'installer


quoi que ce soit pour que le mail puisse être envoyé.
Envoyer un mail lorsqu'une page web est
défaillante
Les admins système utilisent souvent des alertes SMS ou des alertes mail pour être
averti en cas de soucis sur leur serveur. Prenons un cas pratique où nous sommes dans
la situation d'un serveur qui surveille un autre. Le premier check toutes les minutes si
le deuxième serveur répond pour une requête HTTP et surtout si son temps de réponse
est acceptable:
# coding: utf-8

import urllib2
import time

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

from fabric.api import *

def send_error(t2, name):

env.host_string = 'XXX.com'
env.user = 'user'
env.password = 'PASSWORD'

# On récupère les connexions actives du serveur distant


adresses_ip = run("netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq
-c | sort -n")

msg = MIMEMultipart()
msg['From'] = 'YYY@gmail.com'
msg['To'] = 'XXX@gmail.com'
msg['Subject'] = 'Temps de réponse: {0} {1}s'.format(name, t2)
message = 'Temps de réponse: {0} - {1}'.format(t2, adresses_ip)
msg.attach(MIMEText(message))
mailserver = smtplib.SMTP('smtp.gmail.com', 587)
mailserver.ehlo()
mailserver.starttls()
mailserver.ehlo()
mailserver.login('XXX@gmail.com', 'PASSWORD')
mailserver.sendmail('XXX@gmail.com', 'XXX@gmail.com', msg.as_string())
mailserver.quit()

t1 = time.time()

try:
response = urllib2.urlopen('http://XXX.com')
html = response.read()
except:
t2 = time.time() - t1
send_error(t2, "EXCEPTION")

t2 = time.time() - t1

if t2 > 5:
send_error(t2, "TIMEOUT")
Pour exécuter ce script toutes les minutes, pensez à éditer votre crontab .

S-ar putea să vă placă și