scripts/utils/sendmail.py
2013-05-05 05:39:56 +02:00

50 lines
1.8 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""API pour envoyer facilement un mail en python
Author: Vincent Le Gallic <legallic@crans.org>
"""
#: Librairie de communication SMTP
import smtplib
#: Pour fabriquer un mail en MIME
from email.mime.text import MIMEText
#: Pour encoder le mail en utf-8
from email import Charset
Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8')
def create_mail(emetteur, destinataires, objet, message, cc=[], more_headers={}):
"""Fabrique un mail"""
if not isinstance(destinataires, list):
destinataires = [destinataires]
mail = MIMEText(message, "plain", "utf-8")
mail["From"] = emetteur
mail["To"] = u", ".join(destinataires)
mail["Subject"] = objet
more_headers.setdefault("X-Mailer", "/usr/scripts/utils/sendmail.py")
for k in more_headers.keys():
mail[k] = more_headers[k]
if cc != []:
mail["Cc"] = u", ".join(cc)
return mail
def actually_sendmail(emetteur, destinataires, mail, debug=False):
"""Envoie un mail en dialoguant avec le serveur SMTP"""
if debug:
print mail.as_string()
else:
s = smtplib.SMTP('smtp.adm.crans.org')
s.sendmail(emetteur, destinataires, mail.as_string())
s.quit()
def sendmail(emetteur, destinataires, objet, message, cc=[], more_headers={}, debug=False):
"""Fabrique le mail et l'envoie"""
mail = create_mail(emetteur, destinataires, objet, message, cc, more_headers)
actually_sendmail(emetteur, destinataires, mail, debug)
if __name__ == "__main__":
print "Exemple d'utilisation :"
print ">>> import sendmail"
print '>>> sendmail.sendmail("passoire@crans.org", ["nobody@crans.org", "root@crans.org"], "[Test] Envoi de mail", "Ceci est un message envoyé par un script.\\n-- \\nsendmail.py")'