Publié le 20/09/2010
Auteur axel
Réseaux sociaux
0 partages
0 tweets
0 plus
6 commentaires

Envoyer un email avec Javax

L'envoi d'email est une communication de message entre un client et un serveur de mail. JavaMail est une API que l'on peut inclure dans les applications JAVA utilisant le protocole SMTP.

Envoyer un mail dans une application JAVA

Au préalable, téléchargez puis ajouter au projet la librairie JavaMail. Ensuite la class prend en charge toutes les étapes pour envoyer un message d'un émetteur vers un destinataire.
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
/**
 * Envoyer un email
 */
public class SendMail {
 
    private Session session = null;
    private Transport transport = null;
 
    /**
     * Fixer les propriétés
     */
    public void connect(String host, String user, String password) throws NoSuchProviderException, MessagingException {
        Properties properties = new Properties();
        properties.setProperty("mail.transport.protocol", "smtp");
        properties.put("mail.smtp.auth", "true");
        //   properties.setProperty("mail.smtp.port", "587"); 
        this.session = Session.getDefaultInstance(properties, null);
        this.transport = this.session.getTransport();
        this.transport.connect(host, user, password);
    }
 
    public void send(String from, String to, String subject, String body) throws MessagingException {
        MimeMessage message = new MimeMessage(this.session);
        message.setSubject(subject);
        message.setContent(body, "text/plain");
        message.addRecipient(Message.RecipientType.TO,  new InternetAddress(to));
        message.setFrom(new InternetAddress(from));
        this.transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
        this.transport.close();
    }
 
    /**
     * Exemple pour envoyer un email avec SMTP
     */
    public static void main(String args[]) {
        try {
            SendMail email = new SendMail();
            email.connect("smtp.xxx.fr", "xx@FAI.fr", "motdepasse");
            email.send("dest@FAI.fr", "from@FAI.fr", "Envoyer un email avec JAVA", "Je suis le corps du message");
 
        } catch (MessagingException ex) {
            Logger.getLogger(SendMail.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}


En y regardant de plus près, on découvre le mécanisme de la class SendMail pour ouvrir une connexion SMTP avec le serveur de messagerie puis pour envoyer le message vers le destinataire.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar lamardiallo48

Publié par lamardiallo48

le 04/11/2011 à 17:17:19

trop bon ton code ca m'a beaucoup aide. Merci

avatar Djoe

Publié par Djoe

le 17/11/2011 à 16:54:12

Rien à redire, fonctionne parfaitement. Merci beaucoup

avatar stux

Publié par stux

le 28/02/2012 à 02:10:57

Génial.. C'est exactement ce que je cherchais.

avatar Franzi

Publié par Franzi

le 28/02/2012 à 17:57:09

Bonjour,
Le code est simple et compile, après être entré dans public void connect, il n'effectue pas this.session.get.transport et s'arrête. Sous eclipse avec Tomcat, j'obtiens les messages suivants que je ne comprends pas puisque le programme se compile bien:
Description Resource Path Location Type
Classpath entry C:/ASTON/PROGRAMMES/LIVEFRAY/liferay-portal-6.0.6/tomcat-6.0.29/lib/ext/activation.jar will not be exported or published. Runtime ClassNotFoundExceptions may result. Passion_2 P/Passion_2 Classpath Dependency Validator Message
Classpath entry C:/ASTON/PROGRAMMES/mailapi.jar will not be exported or published. Runtime ClassNotFoundExceptions may result. Passion_2 P/Passion_2 Classpath Dependency Validator Message
Classpath entry C:/ASTON/PROGRAMMES/smtp.jar will not be exported or published. Runtime ClassNotFoundExceptions may result. Passion_2 P/Passion_2 Classpath Dependency Validator Message
Classpath entry org.eclipse.jdt.junit.JUNIT_CONTAINER/3 will not be exported or published. Runtime ClassNotFoundExceptions may result. Passion_2 P/Passion_2 Classpath Dependency Validator Message

Est-ce mon environnement qui ne lui convient pas?
Que lui manque-t-il?
Auriez-vous une idée?
Merci.
Bien cordialement.

Franzi.

avatar snoop

Publié par snoop

le 19/03/2012 à 12:06:40

simple, rapide et effectif du premier coup.
Merci!

avatar etoiliste010

Publié par etoiliste010

le 08/05/2012 à 23:37:53

BONSOIR le code compile mais
Grave: null
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. gd4sm1845967wib.6

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1368)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:886)
at SendMail.send(SendMail.java:42)
at SendMail.main(SendMail.java:53)

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
20/09/2010
Visualisation
vu 5649 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Christof dans CMS

Je pense qu'il y a un problème au niveau de l'affectation du longint "Color" dans la
variable de type byte "r". A mon avis, cela risque de provoquer une erreur de
vé...

Publié par fobec dans tuto

Pour le script fonctionne, renseigner les constantes $SITE_PATH et $CACHE_PATH. Remplacer les valeurs avec les chemins de son propre site.

Publié par Souti dans php5

Merci pour ce code. Trs utile.

Pour mon cas, il a fallu que j'ajoute une } avant ?> le pour fermer le for each.

Publié par serenite489 dans java

Merci beaucoup Axel.
C'est genial.

Publié par robbie dans tuto

desole pour le message en multiple j'ai eu un ptit beug