Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Comment envoyer des e-mails en Java : Guide étape par étape

L'envoi d'e-mails depuis une application Java est relativement simple, mais vous devez d'abord disposer de l'API JavaMail et du Java Activation Framework (JAF) installés sur votre machine.

Prérequis

Après décompression, vous trouverez plusieurs fichiers JAR dans les répertoires créés. Ajoutez mail.jar et activation.jar à votre CLASSPATH.

Envoi d'un e-mail simple

Voici un exemple complet pour envoyer un e-mail simple. On suppose que votre localhost est connecté à Internet et configuré pour l'envoi d'e-mails (serveur SMTP local).

Exemple de code

// Fichier : SendEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail {
    public static void main(String[] args) {
        // Destinataire
        String to = "destinataire@gmail.com";
        // Expéditeur
        String from = "expediteur@gmail.com";
        // Serveur SMTP local
        String host = "localhost";

        // Propriétés système
        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);

        // Session par défaut
        Session session = Session.getDefaultInstance(properties);

        try {
            // Création du message
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("Ligne d'objet du message");
            message.setText("Ceci est le corps du message texte simple.");

            // Envoi
            Transport.send(message);
            System.out.println("Message envoyé avec succès !");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

Compilez et exécutez ce programme :

Résultat

$ java SendEmail
Message envoyé avec succès !

Envoi à plusieurs destinataires

Pour envoyer à plusieurs adresses, utilisez la méthode suivante :

void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException

Envoi d'un e-mail HTML

Cet exemple montre comment envoyer un e-mail au format HTML. La différence principale réside dans l'utilisation de setContent() avec le type MIME text/html.

Exemple de code

// Fichier : SendHTMLEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendHTMLEmail {
    public static void main(String[] args) {
        String to = "destinataire@gmail.com";
        String from = "expediteur@gmail.com";
        String host = "localhost";

        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("E-mail HTML");
            // Contenu HTML
            message.setContent("

Bienvenue !

Ceci est un message HTML.

", "text/html"); Transport.send(message); System.out.println("E-mail HTML envoyé avec succès !"); } catch (MessagingException mex) { mex.printStackTrace(); } } }

Résultat

$ java SendHTMLEmail
E-mail HTML envoyé avec succès !

Envoi d'e-mail avec pièce jointe

Pour joindre un fichier, il faut créer un message multipart (MimeMultipart) contenant une partie texte et une partie fichier.

Exemple de code

// Fichier : SendFileEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.File;

public class SendFileEmail {
    public static void main(String[] args) {
        String to = "destinataire@gmail.com";
        String from = "expediteur@gmail.com";
        String host = "localhost";

        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("E-mail avec pièce jointe");

            // Partie texte
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText("Veuillez trouver le fichier en pièce jointe.");

            // Structure multipart
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart);

            // Pièce jointe
            messageBodyPart = new MimeBodyPart();
            String filename = "document.pdf";
            DataSource source = new FileDataSource(filename);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(filename);
            multipart.addBodyPart(messageBodyPart);

            message.setContent(multipart);
            Transport.send(message);
            System.out.println("E-mail avec pièce jointe envoyé !");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

Résultat

$ java SendFileEmail
E-mail avec pièce jointe envoyé !

Authentification utilisateur

Si votre serveur SMTP exige une authentification, définissez ces propriétés :

props.put("mail.smtp.auth", "true");
props.put("mail.smtp.user", "monutilisateur");
props.put("mail.smtp.password", "monmotdepasse");

Vous devrez alors utiliser une Authenticator personnalisée lors de la création de la session. Le reste du mécanisme d'envoi reste identique.

Java

  1. Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
  2. Commentaires Java : Types, utilisation et bonnes pratiques
  3. Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
  4. Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
  5. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  6. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  7. Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
  8. Annotations Java expliquées : types, placement et exemples pratiques
  9. Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code