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)?
Répondre
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();
}
}
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. –
Idéalement oui. il est extrêmement improbable de ne prendre en charge que la partie envoi. –
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.
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 –
@ ismsankalp89 Modifier rejeté. Nous ne sommes pas aveugles. – EJP
Merci pour l'info. –