Enviar email autenticado com Java

Email autenticado com Java
Enquanto eu estava escrevendo o post anterior (Enviar email com Java) surgiu a necessidade na empresa de que os envios de email fossem autenticados, por isso logo após ter publicado o outro post resolvi escrever este para mostrar a diferença.

Repare que as diferenças são muito poucas, mas aconselho que leia o post de envio simples para entender como este funciona e assim entender de modo mais “easy” como autenticar.

Para autenticar você terá que setar mais uma propriedade dizendo que é necessário autenticação:

props.put("mail.smtp.auth", "true");

No modo simples para pegar a sessão se faz assim:

Session session = Session.getDefaultInstance(props, null);
//o null que mudará

Para passar o usuário e a senha faça deste modo:

Authenticator auth = new Authenticator(){

	public PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication("usuario", "senha");
	}
};
Session session = Session.getDefaultInstance(props, auth);

E ai está, as diferenças são apenas essas, o resto é igualzinho.

Segue o código completo

package br.com.luiztaborda.blog.email;

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class EmailAutenticado {

	public static void enviarEmail(
						String de, String para,
						String assunto, String msg)
						throws MessagingException {

		Properties props = System.getProperties();
		// importante: Setando o host smtp
		props.put("mail.transport.protocol", "smtp");
		props.put("mail.smtp.host", "mail.seudominio.com.br");
		props.put("mail.smtp.auth", "true");

		// create some properties and get the default Session
		Authenticator auth = new Authenticator(){

			public PasswordAuthentication getPasswordAuthentication()
			{
				return new
				PasswordAuthentication("usuario", "senha");
			}
		};
		Session session = Session.getDefaultInstance(props, auth);
		// opcional: habilitando o debug
		session.setDebug(true);

		// criando a mensagem
		Message mensagem = new MimeMessage(session);

		// remente
		InternetAddress addressFrom = new InternetAddress(de);

		Address to[] = new InternetAddress[1];
		mensagem.setFrom(addressFrom);
		mensagem.setSubject(assunto);
		mensagem.setContent(msg, "text/html;charset=ISO-8859-1");
		// para texto normal use "text/plain;charset=ISO-8859-1"
		// você pode mudar o charset também

		to[0] = new InternetAddress(para);
		mensagem.setRecipients(Message.RecipientType.TO, to);
		Transport.send(mensagem);
	}

	public static void main(String[] args) throws MessagingException {

		EmailAutenticado.enviarEmail(
		"seuemail@seudominio.com.br", "destino@dominio.com.br",
		"teste", "corpo");
	}
}
Blog Widget by LinkWithin
 

Leave a Reply