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

Publié par roundge dans php5

Bien ! Merci pour cette petite classe en php bien pratique !
J'avais 2000 photos libres de droits à télécharger sur un site, dans un dossier ou les fichiers ne sont pas list&e...

Publié par MasterMbg dans java

Salut! merci pour le code, si tu y ajoutais des commentaires avant chaque module ce serait encore plus facilitant! merci infiniment...

Publié par Fobec dans php5

Bonjour,
vous pouvez poster un message sur le forum, la communaut vous donnera un coup de main pour la mise en place du script.

Publié par Romaingineer dans tuto

Question un peu similaire celle de nicolasterraes.

Je ne trouve pas de ligne dans wpcontentthemes, j'en trouve 2 ou trois dans WP includes mais qui utilsent la fonction echo...

Du coup...

Publié par Annuaire francophone dans tuto

Bonjour, savez-vous s'il existe un logiciel de capture d'écran (ascreen) pour window. Merci