Recherche…


Remarques

La page JavaMail du site Web Oracle le décrit comme suit

L'API JavaMail fournit une infrastructure indépendante de la plate-forme et indépendante du protocole pour créer des applications de messagerie et de messagerie. L'API JavaMail est disponible en tant que package facultatif pour une utilisation avec la plate-forme Java SE et est également incluse dans la plate-forme Java EE.

Le site principal du projet JavaMail est maintenant sur java.net . De là, vous pouvez trouver les javadocs pour de nombreuses versions des API, des liens vers les référentiels de code source, des liens pour les téléchargements, des exemples et des astuces pour utiliser JavaMail avec certains fournisseurs de services de messagerie populaires.

Envoi d'un email à un serveur de messagerie POP3

Cet exemple montre comment établir une connexion à un serveur de messagerie POP3 compatible SSL et envoyer un simple e-mail (texte uniquement).

    // Configure mail provider
    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.mymailprovider.com");
    props.put("mail.pop3.host", "pop3.mymailprovider.com");
    // Enable SSL
    props.put("mail.pop3.ssl.enable", "true");
    props.put("mail.smtp.starttls.enable", "true");

    // Enable SMTP Authentication
    props.put("mail.smtp.auth","true");

    Authenticator auth = new PasswordAuthentication("user", "password");
    Session session = Session.getDefaultInstance(props, auth);

    // Get the store for authentication
    final Store store;
    try {
        store = session.getStore("pop3");
    } catch (NoSuchProviderException e) {
        throw new IllegalStateException(e);
    }

    try {
        store.connect();
    } catch (AuthenticationFailedException | MessagingException e) {
        throw new IllegalStateException(e);
    }
    
    try {
      // Setting up the mail
      InternetAddress from = new InternetAddress("[email protected]");
      InternetAddress to = new InternetAddress("[email protected]");

      MimeMessage message = new MimeMessage(session);
      message.setFrom(from);
      message.addRecipient(Message.RecipientType.TO, to);

      message.setSubject("Test Subject");
      message.setText("Hi, I'm a Mail sent with Java Mail API.");

      // Send the mail
      Transport.send(message);
    } catch (AddressException | MessagingException e)
        throw new IllegalStateException(e);
    } 

Mises en garde:

  • Divers détails ont été câblés dans le code ci-dessus à des fins d'illustration.
  • La gestion des exceptions n'est PAS un exemple. IllegalStateException est un mauvais choix, pour commencer.
  • Aucune tentative n'a été faite pour gérer les ressources correctement.

Envoyer un email simple

public class GoogleMailTest {

    GoogleMailTest() {

    }

    public static void Send(final String username, final String password, String recipientEmail, String title, String message) throws AddressException, MessagingException {
        GoogleMailTest.Send(username, password, recipientEmail, "", title, message);
    }

    public static void Send(final String username, final String password, String recipientEmail, String ccEmail, String title, String message) throws AddressException, MessagingException {
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
        // Get a Properties object
        Properties props = System.getProperties();
        props.setProperty("mail.smtps.host", "smtp.gmail.com");
        props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.port", "465");
        props.put("mail.debug", "true");
        props.setProperty("mail.smtp.socketFactory.port", "465");
        props.setProperty("mail.smtps.auth", "true");
        props.put("mail.smtps.quitwait", "false");
        Session session = Session.getInstance(props, null);
        // -- Create a new message --
        final MimeMessage msg = new MimeMessage(session);
        // -- Set the FROM and TO fields --
        msg.setFrom(new InternetAddress(username));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientEmail, false));
        JOptionPane.showMessageDialog(null, msg.getSize());
        if (ccEmail.length() > 0) {
            msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccEmail, false));
        }
        msg.setSubject(title);
        msg.setText(message);
        msg.setSentDate(new Date());
        SMTPTransport t = (SMTPTransport) session.getTransport("smtps");
        t.connect("smtp.gmail.com", username, password);
        t.sendMessage(msg, msg.getAllRecipients());
        t.close();
    }
    //    And use this code in any class, I'm using it in the same class in main method
    public static void main(String[] args) {
        String senderMail = "[email protected]"; //sender mail id
        String password = "769inzimam-9771"; // sender mail password here
        String toMail = "[email protected]"; // recepient  mail id here
        String cc = ""; // cc mail id here
        String title = "Java mail test"; // Subject of the mail
        String msg = "Message here"; // message to be sent

        GoogleMailTest gmt = new GoogleMailTest();

        try {
            if (cc.isEmpty()) {
                GoogleMailTest.Send(senderMail, password, toMail, title, msg);
            } else {
                GoogleMailTest.Send(senderMail, password, toMail, cc, title, msg);
            }
        } catch (MessagingException ex) {
            Logger.getLogger(GoogleMailTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

Envoyer un courrier HTML formaté

Vous pouvez utiliser le même exemple ci-dessus Envoyer un message simple avec un peu de modification. Utilisez msg.setContent() au lieu de msg.setText() et utilisez le type de contenu html comme text/html .

vérifie ça

msg.setContent(message, "text/html; charset=utf-8");

au lieu de

msg.setText(message);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow