Libellés

Affichage des articles dont le libellé est email. Afficher tous les articles
Affichage des articles dont le libellé est email. Afficher tous les articles

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