Olá!

Para enviar um email Java Mail com autenticação no servidor smtp siga os passos.

É preciso um classe que extenda

javax.mail.Authenticator

é nela onde será informado o usuário e a senha do servidor smtp.

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class Autenticacao extends Authenticator {
  protected PasswordAuthentication
  			getPasswordAuthentication() {
  System.out.println("Autenticando...");
  return new PasswordAuthentication("usuario","senha");
  }
}

Dica: as vezes é necessário informar ao servidor o usuário “completo”, por exemplo, jose@soares.com.br ao invés de somente jose.
Abaixo está a classe que envia o email.

 import java.util.Properties;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
public class EnviaEmail {
  private static Session session = null;
  private static final String contentType = "text/html";
  private static String servidor = "localhost";
 /*
  * Método para enviar email em html
  */
  public void enviarEmailHtml(String assunto,
  			String mensagem, String de)  throws MessagingException {
  String emailPara = "Roberto <roberto@xxxx.xxx.xx>";
  Properties props = new Properties();
  props.put("mail.smtp.host", servidor);
  props.put("mail.smtp.auth", "true");
  session = Session.getDefaultInstance(props, new Autenticacao());
  Message message = new MimeMessage(session);
  InternetAddress endMail = new InternetAddress(emailPara);
  message.addRecipient(Message.RecipientType.TO, endMail);
  InternetAddress fromEmail = new InternetAddress(de);
  message.setFrom(fromEmail);
  message.setSubject(assunto);
  MimeMultipart mpRoot = new MimeMultipart("mixed");
  MimeMultipart mpContent = new MimeMultipart("alternative");
  MimeBodyPart mbp1 = new MimeBodyPart();
  mbp1.setContent(mensagem.toString(), contentType);
  mpContent.addBodyPart(mbp1);
  MimeBodyPart contentPartRoot = new MimeBodyPart();
  contentPartRoot.setContent(mpContent);
  mpRoot.addBodyPart(contentPartRoot);
  message.setContent(mpRoot);
  message.saveChanges();
  System.out.println("Conectado...");
  Transport.send(message);
  System.out.println("Enviado.");
  }
}

Os comandos que diferenciam o envio autenticado são:

// informa que é necessário fazer a autenticação
props.put("mail.smtp.auth", "true");
// Onde geralmente se vê passando null
//agora é passado um Authenticator
Session.getDefaultInstance(props, new Autenticacao());

Update – 01/09/2008
Para enviar um email usando o servidor do GMail use o método abaixo:

public void enviarEmail(String emailDest, String nomeDest,
			String emailRemet, String nomeRemet,
                        String assunto, String corpo)
			throws Exception {
		Properties prop = System.getProperties();
		prop.put("mail.smtp.host", "smtp.gmail.com");
		prop.put("mail.smtp.auth", "true");
		prop.put("mail.debug", "true");
		prop.put("mail.smtp.debug", "true");
		prop.put("mail.mime.charset", "ISO-8859-1");
		prop.put("mail.smtp.port", "465");
		prop.put("mail.smtp.starttls.enable", "true");
		prop.put("mail.smtp.socketFactory.port", "465");
		prop.put("mail.smtp.socketFactory.fallback", "false");
		prop.put("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory");
		Authenticator auth = new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication("email@gmail.com",
						"Senha"); // Senha do gmail
			}
		};
		Session session = Session.getInstance(prop, auth);
		MimeMessage message = new MimeMessage(session);
		message.setFrom(new InternetAddress(emailRemet, nomeRemet));
		message.addRecipient(Message.RecipientType.TO, new InternetAddress(
				emailDest, nomeDest));
		message.setSubject(assunto);
		message.setContent(corpo, "text/plain");
		Transport.send(message);
	}

Até mais,
Roberto

Share

Novo blog!

31/agosto/2008 - Geral, Post Antigos

Olá!

Abri um blog sobre assuntos gerais http://www.furutani.com.br, não irei abandonar esse site, que ficará apenas dedicado a assuntos relacionados a Java.

Até mais,
Roberto

Share

Olá!

Depois de tanta espera finalmente hoje estou saindo de férias, ficarei 20 dias na casa dos meus pais, e o mais importante sem escrever uma linha de código. Por isso estou disponibilizando um exemplo de aplicação para gerar uma planilha do excel com um gráfico atachado. Utilizei JFreeChart para gerar o gráfico e o arquivo xls foi gerado com o Jakarta POI. Clique aqui para fazer download dele.
Um outro framework para plotar gráfico em Java que eu usei foi o JCharts, ele é bem fácil de usar mas peca pela fraca documentação, que é tão rica no JFreeChart.

Abraços

Share

Olá!

Hoje disponibilizo um exemplo de custom tag.

Uma custom tag pode te ajudar muito quando é necessário customizar uma página JSP conforme alguns parâmetros cadastrados no banco. Ela ajuda a tirar a complexidade de tratar essas coisas diretamente no JSP.
Algumas pessoas usam apenas para encapsular tag HTML tipo input text, select, etc.

Até mais,
Roberto

Share

Adobe Flex 3

31/agosto/2008 - Java, Post Antigos

Olá!

Vou postar aqui um pequeno (sem comentários…) exemplo de RIA feito com Adobe Flex 3.

O compilador do Adobe Flex é gratuito e pode ser baixado clicando aqui. No momento estou usando a versão 3.0.2 build 2113.

O código fonte do exemplo pode ser baixado clicando aqui. Descompacte o alert.rar dentro do diretório samples que você irá encontrar quando descompactar o SDK do Flex.

O resultado do exemplo é visto abaixo.

  

O próximo passo é fazer o Flex conversar com o Java usando BlazeDS.

Alguns links para aprender mais.

Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate – Uma Solução OpenSource para Sistemas Web. (Parte 1)

Documentação oficial

Até mais,
Roberto

Share