Nesse post eu irei criar uma classe que envia e-mail HTML de um servidor com autenticação usando SSL. Como exemplo, utilizaremos uma conta do GMail.
Primeiro passo é criar a conta do GMail (ou usar a sua). Acesse o site: http://www.gmail.com e clique em Criar uma conta (Create an account). Siga os passos e anote a senha. Faça o download da API do Java Mail no site: http://www.oracle.com/technetwork/java/index-138643.html e descompacte-a.
Crie um novo projeto, coloque no classpath (Build Path no Eclipse e Library no Netbeans) o arquivo mail.jar que está dentro do pacote que você fez download.
package br.com.thiagovespa.email.utils; 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.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SSLMailSender { public static void sendMail(String host, int port, final String username, final String password, String from, String to, String subject, String content) throws AddressException, MessagingException { Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.socketFactory.port", port); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", port); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); message.setContent(content, "text/html"); Transport.send(message); } public static void main(String[] args) { try { sendMail("smtp.gmail.com", 465, "usuario@gmail.com", "senha", "usuario@gmail.com", "destino@gmail.com", "Teste", "<html><body><b>Conteúdo</b></body></html>"); System.out.println("E-mail enviado!"); } catch (AddressException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Na linhas 20-26 são criadas as propriedades para a criação da sessão de e-mail a ser utilizada (linha 28). É utilizado o método getDefaultInstance para criar a sessão, em alguns casos, caso não funcione utilize o getInstance ao invés do getDefaultInstance.
A sessão de e-mail é criada utilizando autenticação (linha 32). Da linha 36 a 41 construímos a mensagem e na linha 43 enviamos. Ainda está faltando o tratamento de erro, mas para enviar o e-mail é só executar o código alterando das linhas 49 a 52 com os seus dados.
Show de bola, efetuei uns testes aqui e foi show !!!! Vlw por compartilhar !!!!