2017-08-28 1 views
0

Peut-on utiliser Java Mail pour se connecter à un serveur Exchange Online (Office 365)?JavaMail peut-il être utilisé pour se connecter à Exchange Online Server (Office 365)?

+0

Je ne l'ai jamais essayé, mais par cette page, il semble prendre en charge tous les protocoles nécessaires: https://support.microsoft.com/en-us/help/2021880/configuring-outlook-for-microsoft-online -services-mso –

+0

@ ismsankalp89 Modifier rejeté. Nous ne sommes pas aveugles. – EJP

+0

Merci pour l'info. –

Répondre

0

Oui, voici un exemple que je suis arrivé de github

import java.util.Date; 
import java.util.Properties; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class SendEmailOffice365 { 

    private static final Logger LOGGER = Logger.getAnonymousLogger(); 

    private static final String SERVIDOR_SMTP = "smtp.office365.com"; 
    private static final int PORTA_SERVIDOR_SMTP = 587; 
    private static final String CONTA_PADRAO = "[email protected]"; 
    private static final String SENHA_CONTA_PADRAO = "password*"; 

    private final String from = "[email protected]"; 
    private final String to = "[email protected]"; 

    private final String subject = "Teste"; 
    private final String messageContent = "Teste de Mensagem"; 

    public void sendEmail() { 
     final Session session = Session.getInstance(this.getEmailProperties(), new Authenticator() { 

      @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(CONTA_PADRAO, SENHA_CONTA_PADRAO); 
      } 

     }); 

     try { 
      final Message message = new MimeMessage(session); 
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
      message.setFrom(new InternetAddress(from)); 
      message.setSubject(subject); 
      message.setText(messageContent); 
      message.setSentDate(new Date()); 
      Transport.send(message); 
     } catch (final MessagingException ex) { 
      LOGGER.log(Level.WARNING, "Erro ao enviar mensagem: " + ex.getMessage(), ex); 
     } 
    } 

    public Properties getEmailProperties() { 
     final Properties config = new Properties(); 
     config.put("mail.smtp.auth", "true"); 
     config.put("mail.smtp.starttls.enable", "true"); 
     config.put("mail.smtp.host", SERVIDOR_SMTP); 
     config.put("mail.smtp.port", PORTA_SERVIDOR_SMTP); 
     return config; 
    } 

    public static void main(final String[] args) { 
     new SendEmailOffice365().sendEmail(); 
    } 

} 
+0

Merci Yohannes. Je suppose que si vous pouvez vous connecter pour envoyer un courrier que vous pouvez également vous connecter pour lire la boîte de réception/dossier. –

+0

Idéalement oui. il est extrêmement improbable de ne prendre en charge que la partie envoi. –

0

Microsoft a trop de produits avec des noms différents qui sont vraiment la même à l'intérieur! Ces JavaMail FAQ instructions devraient vous aider, mais vous devrez changer les noms d'hôte.