Visión general
Contenido
La mayoría de los sitios web ofrecen hoy una suscripción a un boletín informativo de cualquier tipo para informarnos sobre sus grandes ofertas, descuentos, nuevos productos, servicios y recibos.
Al registrarse en un sitio web, también (en la mayoría de los casos) recibimos un correo electrónico para verificar nuestra dirección de correo electrónico y vincularla a la cuenta en la que se está registrando.
Te puede interesar:Spring Security: registro de verificación de correo electrónicoEsta puede ser una gran táctica de marketing y realmente puede hacer crecer su negocio y su plataforma, por lo que es imprescindible saber cómo crear un sistema simple para enviar correos electrónicos, especialmente si está lanzando una plataforma que ofrece un producto o servicio de cualquier tipo.
Para lograr esto, usaremos una de las bibliotecas centrales de Java: javax.mail
.
Envío de un correo electrónico de texto sin formato
Aunque nuestro correo electrónico de ejemplo a continuación no es tan emocionante como los correos electrónicos bien diseñados con botones e imágenes personalizados, un correo electrónico simple como este a menudo se envía para registrarse o restablecer la contraseña significa:
public class EmailSender {
public static void main(String[] args) {
String recipient = "[email protected]";
String sender = "[email protected]";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
Session session = Session.getDefaultInstance(properties);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
message.addRecipients(Message.RecipientType.TO, new Address[...]); // email to multiple recipients
message.setSubject("Hello World!");
message.setText("And hello from the body of the message!");
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
Nos presentan un par de clases aquí:
Te puede interesar:Documentación de la API REST de Java con Swagger2Properties
– Representa cualquier conjunto de propiedades y valores predeterminados.Session
– Recopila las propiedades y los valores predeterminados que utiliza la API del correo.MimeMessage
– Representa el MÍMICA mensaje de correo electrónico de estilo.InternetAddress
– Representa un RFC882 dirección de Internet de sintaxis – «[email protected]»
Envío de correo electrónico con HTML
Los correos electrónicos HTML son muy comunes y probablemente los vea todos los días en su bandeja de entrada. Todos los nuevos catálogos de lujo y productos llamativos están decorados para atraer tanto como sea posible, al igual que sus contrapartes de sitios web.
Enviar un correo electrónico con HTML es un poco diferente del ejemplo anterior en una sola línea:
Te puede interesar:Guía de Spring Data JPApublic class EmailSender {
public static void main(String[] args) {
String recipient = "[email protected]";
String sender = "[email protected]";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
Session session = Session.getDefaultInstance(properties);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
message.setSubject("Hello World!");
message.setContent("<h1>Message Header</h1>" +
"<p>This is a paragraph </p>" +
"<p>This is another paragraph</p>", "text/html");
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
Usando el .setContent()
método, y estableciendo el tipo para ser text/html
, podemos agregar HTML a nuestro mensaje de correo electrónico.
El método acepta una MultiPart
objeto o un Objeto / Cadena, y simplemente establece los argumentos como el contenido del mensaje.
Envío de correo electrónico con un archivo adjunto
En muchos casos, es posible que desee enviar un correo electrónico con un archivo adjunto de cualquier tipo. Por ejemplo, después de que un cliente solicita su producto o paga por su servicio, usted querrá enviar un recibo para confirmar la compra.
Si su producto o servicio requiere documentos legales, un cliente también puede recibir un documento legal para firmar y enviar de vuelta, todo lo cual se puede hacer por correo electrónico.
Te puede interesar:Integración de la base de datos H2 con Spring BootEn cualquiera de estos casos, esto requiere un enfoque un poco diferente al de nuestros ejemplos anteriores:
public class EmailSender {
public static void main(String[] args) {
String recipient = "[email protected]";
String sender = "[email protected]";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
Session session = Session.getDefaultInstance(properties);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
message.setSubject("Receipt for your product!");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Thank you for buying with us, here's a receipt for your product.");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource("receipt.txt");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
Aquí, nos presentan algunas clases nuevas:
BodyPart
– Una clase abstracta que representa una parte de unMultipart
Multipart
– Un contenedor para múltiplesBodyPart
objetosDataSource
– Proporciona un tipo para una recopilación arbitraria de datos, así como el acceso a ellos en forma deInputStreams
yOutputStreams
Al agregar un Multipart
como contenido, podemos agregar tantos BodyParts
en ella, y después de agregar una, podemos usar la misma variable de referencia para inicializar una nueva y almacenarla en el Multipart
también.
Conclusión
Estas son las tres cosas más comunes que necesita saber para enviar correos electrónicos de cualquier tipo en Java simple, sin bibliotecas de terceros adicionales.