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 5700 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fred dans tuto

J'suis d'accord avec Do, PHP est deja un moteur de template.
Disons que le moteur de template permet de separer le code de la vue pour les debutants qui ont besoin qu'on leur impose des bornes...

Publié par neuro dans CMS

exemple edifaint et trés interessant

Publié par Axel dans java

Bonjour Kezouille,
je viens de tester sur notre LAN (serveur Windows 7), la surveillance a l'air de marcher.
De votre cote, s'agit-il d'un serveur sous Windows ou sous Linux ?
Pouvez-vou...

Publié par Daxentuut dans java

Avec les imports c'est mieux :

import java.awt.AWTException
import java.awt.Robot
import java.awt.event.KeyEvent
import java.io.IOException
import java.util.logging.Level
import...

Publié par Quentin dans tuto

Merci pour ces petits codes java script qui me sont d'un grand secours pour mon TP :)