java-ee
La API de Javamail
Buscar..
Observaciones
La página JavaMail en el sitio web de Oracle lo describe de la siguiente manera
La API de JavaMail proporciona un marco independiente de la plataforma y del protocolo para crear aplicaciones de correo y mensajería. La API de JavaMail está disponible como un paquete opcional para usar con la plataforma Java SE y también se incluye en la plataforma Java EE.
El sitio principal para el proyecto JavaMail ahora está en java.net . Desde allí puede encontrar los javadocs para muchas versiones de las API, enlaces a los repositorios de código fuente, enlaces para descargas, ejemplos y sugerencias para usar JavaMail con algunos proveedores de servicios de correo electrónico populares.
Enviando un correo electrónico a un servidor de correo electrónico POP3
Este ejemplo muestra cómo establecer una conexión a un servidor de correo electrónico POP3 habilitado para SSL y enviar un correo electrónico simple (solo texto).
// 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);
}
Advertencias:
- Varios detalles han sido incorporados en el código anterior con fines ilustrativos.
- El manejo de excepciones NO es ejemplar. La
IllegalStateException
es una mala elección, para empezar. - No se ha intentado manejar los recursos correctamente.
Enviar correo electrónico 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);
}
}
}
Enviar correo HTML con formato
Puede usar el mismo ejemplo anterior Enviar correo simple con una pequeña modificación. Use msg.setContent()
lugar de msg.setText()
y use el tipo de contenido html como text/html
.
Mira esto
msg.setContent(message, "text/html; charset=utf-8");
en lugar de
msg.setText(message);