Enviar e-mail com anexo em Java usando o gmail.
Autor: Jabes Felipe | Publicado: 2011-08-26T07:17:00-07:00

Olá Pessoal,Depois de um longo periodo sem postar, neste post, vou mostrar como mandar email com anexo em java, e para testar o nosso envio de email, vamos usar o gmail. Neste exemplo será usado a API javax.mail, teremos apenas uma classe que irá mandar uma imagem em anexo usando o protocolo do gmail.No final do post, o projeto estará disponível para download.package com.blogspot.jabesfelipe.email;import java.io.InputStream;import java.util.Properties;import javax.activation.DataHandler;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.PasswordAuthentication;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;import javax.mail.util.ByteArrayDataSource;/** * Classe para enviar email em anexo usando o Gmail. *  * @author jabes.cunha * */public class EnviaEmail {		public static void main(String[] args) {		new EnviaEmail().enviar();	}	public void enviar() {		try {			//usuario e senha do seu gmail			final String usuario = "jabesfelipe@gmail.com";			final String senha = "mandioca";			//config. do gmail			Properties mailProps = new Properties();			mailProps.put("mail.transport.protocol", "smtp");			mailProps.put("mail.smtp.starttls.enable","true");			mailProps.put("mail.smtp.host", "smtp.gmail.com");			mailProps.put("mail.smtp.auth", "true");			mailProps.put("mail.smtp.user", usuario);		        	mailProps.put("mail.debug", "true");			mailProps.put("mail.smtp.port", "465");			mailProps.put("mail.smtp.socketFactory.port", "465");			mailProps.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");			mailProps.put("mail.smtp.socketFactory.fallback", "false");			//eh necessario autenticar			Session mailSession = Session.getInstance(mailProps, new Authenticator() {									public PasswordAuthentication getPasswordAuthentication(){									return new PasswordAuthentication(usuario, senha);				}			});			mailSession.setDebug(false);			//config. da mensagem 			Message mailMessage = new MimeMessage(mailSession);			//remetente			mailMessage.setFrom(new InternetAddress(usuario));			//destinatario			mailMessage.setRecipients(Message.RecipientType.TO, 			InternetAddress.parse(usuario));					//mensagem que vai no corpo do email			MimeBodyPart mbpMensagem = new MimeBodyPart();			mbpMensagem.setText("Segue em anexo, imagem do novo focus hath.");			//partes do email			Multipart mp = new MimeMultipart();			mp.addBodyPart(mbpMensagem);						//imagem que sera enviada em anexo, ta no mesmo diretorio da classe.			String imagem = "focusHath2011.jpg";			InputStream is = getClass().getResourceAsStream(imagem);			//setando o anexo			MimeBodyPart mbpAnexo = new MimeBodyPart();			mbpAnexo.setDataHandler(new DataHandler(new ByteArrayDataSource(is, "application/image")));					mbpAnexo.setFileName(imagem);			mp.addBodyPart(mbpAnexo);			//assunto do email			mailMessage.setSubject("Novo Focus Hath 2011");						//seleciona o conteudo			mailMessage.setContent(mp);			//envia o email			Transport.send(mailMessage);		} catch (Exception e) {			e.printStackTrace();		}	}}EnviaEmail.javaA classe, está documentada, explicando os passos a passos, o e-mail que será enviado, ficará conforme imagem abaixo:Para quem quiser baixar o projeto desenvolvido, clique aqui.Qualque dúvida, crítica ou sugestão, fico à disposição.