Envoyer un email avec son compte Google en Java

 Article modifié dernièrement le 2 Mai 2011 @ 18 h 10 min

L’envoi de courriers électronique est sans doute le service le plus utilisé sur Internet, il suffit pour cela soit d’utiliser un client lourd de messagerie tel Outlook et Thunderbird, soit de se connecter directement au webmail de la société gérant votre adresse électronique, par exemple Gmail, Yahoo! Mail ou Free.

A noter qu’il est conseiller d’avoir une adresse électronique autre que celle de votre fournisseur d’accès Internet, comme cela en cas de résiliation ou de changement de fournisseur, vos emails reçus et envoyés par cette adresse ne seront eux pas supprimés.

Qu’en est-il lorsqu’il s’agit de devoir programmer l’envoi d’emails dans une application écrite en Java ? Doit-on obligatoirement devoir installer un serveur de messagerie électronique  ?

La suite de ce billet va vous dévoiler une façon simple et efficace de s’y prendre sans rien devoir installer en utilisant simplement les identifiants de son compte de messagerie personnel.

Gmail

Certes l’algorithme à utiliser pour envoyer des emails depuis une application Java n’est pas nouveau, cependant il existe des tonnes de variantes un peu partout sur la toile, celle-ci présente l’avantage de pouvoir être utilisée avec le serveur SMTP de Gmail de manière sécurisée (SSL).

Google et ce petit bout de code présenté ci-dessous nous abstiennent d’installer quoi que ce soit sur son ordinateur, il suffit juste d’avoir à porter de mains les identifiants de son compte Gmail.

L’exemple suivant permet de se connecter au serveur SMTP de Gmail de façon sécurisée (identifiants cryptés) en utilisant la classe SSLSocketFactory qui nécessite au moins la version Java Tiger (5.0).

Classe utilitaire Java

Le fichier smtp.properties appelé dans le code Java et détaillé ci-dessous fournit les informations nécessaires pour se connecter au serveur distant Gmail, pour une utilisation plus générique du code, ces paramètres sont à modifier selon la société gérant votre adresse électronique.

Fichier de propriétés externalisé (smtp.properties)

Google Apps

A noter qu’avec Google Apps il est possible de se créer des comptes emails gratuitement pour un nom de domaine qui vous appartient, généralement un site professionnel ou votre blog personnel.

Les emails ainsi crées sont du type [email protected]_de_votre_site_web et permettent d’utiliser la technique ci-dessus pour envoyer directement un email depuis ces comptes (généralement [email protected]_domaine.com, [email protected]_domaine.com, [email protected]_domain.com, etc.).

Les emails envoyés ne proviendront donc plus de votre compte personnel mais de votre compte professionnel, le fichier smtp.properties sera donc à modifier de la façon suivante :

Trois flèches vers le bas

1- Logiciel de brouillage d’adresse IP :

Contourner la censure en surfant anonyme

2- L’article explicatif :

La différence entre un proxy et un VPN

3- Comment espionner un smartphone (app) :

L’application de référence

Commentez ici

  • Greg 3 mai 2011, 3 03

    Article intéressant en effet

  • Mimie 10 mai 2011, 9 09

    Oui c’est toujours bon d’avoir un exemple sous la main 🙂

  • Emil boyer 4 juin 2011, 12 12

    Bonjour toute le monde.
    Au fait j’ai essayer d’exécuter ce code et de le suivre a la lettre.
    Mais au moment du test j’obtient une erreur de genre:

    java.lang.NoClassDefFoundError: Could not initialize class com.javamail.EmailUtil

    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)

    J’ai fait pour l’exécuter:

    EmailUtil.sendEmailSSL([email protected], « Bonjour gmail »,  » Hello javamail !!! »);

    Est-ce que quelqu’un a ue idée. Je besoin de votra aide, ou un exemple plus concret SVP!!!
    Merci d’avance!!!

  • Mimie 4 juin 2011, 20 08

    @Emil boyer : difficile de faire plus concret 🙂 j’utilise la version 1.4.4 de la librairie JavaMail, disponible ici.
    Ton problème vient peut-être de là.

  • tjmaster 2 septembre 2011, 17 05

    article très interressant, en fait ça très bien chez moi

Article suivant:

Article précédent:

Share This