java-ee
L'API Javamail
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);