Envoyer un email avec Javax

Voici comment envoyer un email au format texte. La class SendMail ouvre une connexion SMTP avec le serveur de messagerie puis envoyer le message vers le 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);
        }
    }
}

Commentaire des internautes
avatar
etoiliste010 le 08/05/2012
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)
avatar
snoop le 19/03/2012
simple, rapide et effectif du premier coup.
Merci!
avatar
Franzi le 28/02/2012
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
stux le 28/02/2012
Génial.. C'est exactement ce que je cherchais.
avatar
Djoe le 17/11/2011
Rien à redire, fonctionne parfaitement. Merci beaucoup
avatar
lamardiallo48 le 04/11/2011
trop bon ton code ca m'a beaucoup aide. Merci
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour20/09/2010
VisualisationVu 1636 fois
PublicInternaute
CategorieJAVA - Sources - Reseau
Auteur de l'article
Axel Axel
connecté le 20/09/2011
28 ans - France Sud-Est
41 articles dans la section
Contacter l'auteur
Partager l'article