O GMail mudou

03/fevereiro/2009 - Assuntos Aleatórios

Olá! Acabei de ver no Gmail que os botões foram trocados, agora ficaram mais inteligentes e bonitos. Agora é possível fazer buscas e criar etiquetas e também procurar pastas no próprio clicque do botão.
GMail

GMail

Até mais, Roberto
Share
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