JavaMail API usando Gmail com TLS e SSL
A API do JavaMail permite enviar e-mail utilizando qualquer provedor, neste post veremos como usar para enviar e-mails com o gmail via TLS ou SSL
Última atualização em: | 10257 Visualizações
API JavaMail
A API JavaMail fornece uma estrutura independente de plataforma e independente de protocolo para criar aplicativos de mensagens.
A API do JavaMail é hoje uma api de código aberto disponível no github (https://javaee.github.io/javamail).
Nesta página você pode baixar o binário, verificar exemplos e novidades da API.
Para usar em projetos maven, pode usar a dependency
:
<dependencies>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
Note que a versão atual hoje é a 1.6.1, para saber se tem novas versões acesse: https://mvnrepository.com/artifact/com.sun.mail/javax.mail
Veja nestes exemplos como utilizar a api para enviar mensagens usando o gmail com TLS ou SSL.
JavaMail gmail via TLS
Envie um e-mail por meio do servidor SMTP do Gmail usando a conexão TLS.
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 SendMailTLS {
public static void main(String[] args) {
final String username = "username@gmail.com";
final String password = "password";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.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( username ));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("wolmirgarbin@gmail.com"));
message.setSubject("Receitas de Código: Assunto do E-mail");
message.setText("Olá.!! Esta e-mail foi enviado usando javamail");
Transport.send(message);
System.out.println("Pronto!");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
JavaMail gmail via SSL
Envie um e-mail por meio do servidor SMTP do Gmail usando a conexão SSL.
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 SendMailSSL {
public static void main(String[] args) {
final String username = "<username>";
final String password = "<password>";
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("de@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("wolmirgarbin@gmail.com"));
message.setSubject("Receitas de Código: Assunto do E-mail");
message.setText("Olá.!! Esta e-mail foi enviado usando javamail");
Transport.send(message);
System.out.println("Pronto!");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
Note que em ambos os exemplos enviamos apenas conteúdo em texto puro.
Enviando e-mail em HTML
Para enviar HTML basta fazer uma pequena mudança no código, onde no exemplo está:
message.setText("Olá.!! Esta e-mail foi enviado usando javamail");
Basta adicionar:
message.setContent("<p>Olá.!! Esta e-mail foi enviado usando javamail</p>", "text/html; charset=utf-8");
Lembrando que você pode adicionar o HTML completo.
Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.