Header WebSite (huez)

Envoi de mails lors des anniversaires.

Bonjour à tous,

A force d'oublier les anniversaires, je me suis motivé à faire quelque chose...

L'idée première était de coder un petit démon en C pour m'envoyer des mails afin de me rappeler ce genre de dates... Et puis finalement, pourquoi s'embetter quand on a un shell et une crontab?

Jusqu'au jour de la miggration de version Debian qui a changé mon shell par défaut... et rendu caduc mon script.

Voilà donc une nouvelle version en python (pas très propre, mais ça marche :p)

BirthDaysScript.py

Le "coeur" du système :

import smtplib
import os
import sys
import datetime
def sendTextMail(name, age):
        SUBJECT = "[Anniversaire] " + name
        TEXT = name + " vient d'avoir " + str(age) + " ans."
        fromaddr = "webmaster@alix.stun.fdn.fr"
        mto ="etienne-raby@lra-raby.fr"
        message = 'Subject: %s\n\n%s' % (SUBJECT, TEXT)
        smtp = smtplib.SMTP()
        smtp.connect()
        smtp.sendmail(fromaddr,mto,message)
        smtp.close()


def main():
        now = datetime.datetime.now()
        intCurrentDay = int(now.day)
        intCurrentMonth = int(now.month)
        intCurrentYear = int(now.year)

        # Ouverture d'un fichier en *lecture*:
        file = open(sys.argv[1], "r")

        # Utilisation du fichier
        for line in file:
                dataArray = line.rstrip('\n\r').split(";")
                intMonth = int(dataArray[2])
                if intCurrentMonth == intMonth:
                        intDay = int(dataArray[1])
                        if intCurrentDay == intDay:
                                intYear = int(dataArray[3])
                                sendTextMail(dataArray[0],intCurrentYear-intYear)

        # Fermeture du fichier
        file.close()# Ouverture d'un fichier en *lecture*:

if __name__ == '__main__':
        main()

BirthDaysScript.conf

Le fichier de configuration qui permet de spécifier noms et dates n'est composé que de lignes séparées par un ";" avec la syntaxe NOM;JOUR;MOIS;ANNEE

Par exemple :

Jean Raoul DUCABLE;04;11;1986
Eve ORACLE;08;04;1976

Crontab

Et donc pour finir un appel au script tous les jours :

1 0 * * * python ~/BirthDaysScript.py ~/BirthDaysScript.conf