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

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Ú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.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!