lundi 13 décembre 2010

Faire de l'envoi d'email massif avec Groovy et Commons-email de Apache

Pour envoyer des emails massivement en groovy, voici un script.

Il suffit de remplir la variable to avec des adresses emails séparées par une virgule.
def to="moi@gmail.com, toi@gmail.com, titi@gmail.com"

Et le script enverra un email à chaque personne individuellement. Un destinataire ne verra pas les autres destinataires.

Ce script se base sur la librairie Java commons-email de Apache.


#!/usr/bin/groovy

import javax.mail.*;
import javax.mail.internet.*;
import org.apache.commons.mail.*;

/* Groovy s'occupe de télécharger et d'utiliser la librairie commons-email de Apache. Il n'y a rien d'autre à faire. */
@Grapes([
    @Grab(group='org.apache.commons', module='commons-email', version='1.2'),
])

def subject = "Le sujet de mon email."
def to="moi@gmail.com, toi@gmail.com, titi@gmail.com"

def content = """
Ceci est un texte alternatif car les emails en HTML ne sont pas accepté par tout le monde.
"""

def htmlContent ="""
Ceci est un texte en html
"""

/* SMTP CONFIGURATION */

/* Pour des comptes configurés avec SSL, par exemple Gmail */
def tls = true;
def login = "myLogin@gmail.com"
def password = "MyPassword"


def port = 587
def hostName = "smtp.gmail.com"
def from = login
def debug = true
def charset = "UTF-8"

def cc = null
def bcc = login

/* SETUP */
to.split(",").each{ toEmail ->
    HtmlEmail email = new HtmlEmail();
   
    email.addTo(toEmail.trim());

    if (tls) {
        email.setTLS(true);
        email.setAuthentication(login, password);
    }
    email.setSmtpPort(port);
    email.setHostName(hostName);
    email.setFrom(from);
    email.setSentDate(GregorianCalendar.getInstance().getTime());
    email.setDebug(debug);

    //email.setCharset(charset)
    email.setSubject(subject);
    email.setHtmlMsg(htmlContent);
    email.setTextMsg(content);

    cc?.split(",").each{ it ->
        email.addCc(it.trim());
    }
    bcc?.split(",").each{ it ->
        email.addBcc(it.trim());
    }
    email.buildMimeMessage();
    MimeMessage msg = email.getMimeMessage();

    /* SEND MESSAGE */
    println("Sending message ====> " + toEmail);
    Transport.send(msg);

}



Pour utiliser groovy vous avez besoin d'une JVM installée :
http://www.oracle.com/technetwork/java/javase/downloads/index.html

Et de groovy également :
http://groovy.codehaus.org/Download

Aucun commentaire:

Enregistrer un commentaire