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

Publié par habib dans CMS

je veu cree des applications base de donnee comme gestion park reforme du materielle les unites materielle entree sortie inventaire aidez moi email bettaharhabib1966@yahoo.fr <br>tel 0557187557...

Publié par hilflo dans tuto

Tres bon article qui montre bien les subtilites des mutualises de 1and1.
Je l'ai utilise pour un de mes sites en y ajoutant de l'url rewriting pour eviter d'avoir des parametres dans l'url avec cet...

Publié par Fokoneh dans java

Je teste d'abord, Je reviens

Publié par etoiliste010 dans java

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.i...

Publié par l'indik dans java

Sauf que si l'objet n'est plus utilisé, quand tu fait ton new , la mémoire sera automatiquement libéré si cela est nécessaire. Donc l'utilisation de System.gc() n'es...