API Java Mail: envoyer des e-mails via le compte Outlook d'entreprise
Je veux que mon programme puisse envoyer des e-mails à partir de mon compte Outlook d'entreprise. J'ai regardé de nombreux exemples JMA qui ne semblent pas être ce que je veux.
- Où puis-je trouver des exemples simples d'envoi de mails via Outlook?
- Devrais-je déplacer le système d'envoi vers une application de service distincte? et si oui, pourquoi?
4 answers
Tout ce dont vous avez besoin est vos paramètres SMTP pour votre compte d'entreprise. Définissez-les dans votre programme à l'aide de l'API Java mail et c'est tout. par exemple
Properties props = System.getProperties();
props.put("mail.smtp.host", "your server here");
Session session = Session.getDefaultInstance(props, null);
Vous devez d'abord télécharger javax.mail
JAR. Ensuite, essayez le code suivant:
import java.io.IOException;
import java.util.Properties;
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 SendMail {
public static void main(String[]args) throws IOException {
final String username = "enter your username";
final String password = "enter your password";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "outlook.office365.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("enter your outlook mail address"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("Enter the recipient mail address"));
message.setSubject("Test");
message.setText("HI");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
D'après ce que je peux voir, il vous manque l'importation suivante:
import java.io.IOException;
Incluez-le simplement dans les importations de classe au moment de l'ancrage de cette classe et votre problème devrait être résolu.
J'ai essayé avec outlook.office365.com
comme un nom d'hôte et obtenu authentication unaccepted exception
. Lorsque vous essayez avec smtp-mail.outlook.com
Je suis capable d'envoyer des mails via Outlook avec Javamail API
.
Pour plus de détails Consultez les paramètres d'Outlook sur le site officiel d'Outlook.
Pour le code de démonstration de travail complet Lire cette réponse.