Anexar arquivo em email usando javax.mail.*

1 resposta
P

Olá pessoal, alguém sabe como posso anexar arquivos ao enviar um email pelo Java?

Estou usando mailMessage mas lá nào tem nenhum parametro para anexos…

public void send(String to, String cc, String bcc, String from, String subject, String text) throws Exception {

MailMessage msg = new MailMessage (to,cc,bcc,from,subject,text);

this.send(msg);

return;

}
public void send(MailMessage msg) throws Exception {

try {

Properties mailProps = new Properties();

mailProps.put(mail.smtp.host, SMTP_HOST_NAME);
SimpleAuth auth = null; 
		auth = new SimpleAuth (usuario,senha); 

		mailProps.put("mail.smtp.auth", "true"); 
		mailProps.put("mail.user",usuario); 
		mailProps.put("mail.from",msg.getFrom()); 
		mailProps.put("mail.to", msg.getTo()); 

		mailProps.put("mail.smtp.host", SMTP_HOST_NAME); 
		mailProps.put("mail.smtp.auth", "true"); 
		mailProps.put("mail.debug", "true"); 
		
		mailProps.put("mail.smtp.port", SMTP_PORT); 
		mailProps.put("mail.smtp.socketFactory.port", SMTP_PORT); 
		mailProps.put("mail.smtp.socketFactory.class", SSL_FACTORY); 
		mailProps.put("mail.smtp.socketFactory.fallback", "false"); 


		Session mailSession = Session.getDefaultInstance(mailProps,auth); 

		mailSession.setDebug(true); 

		Message email = new MimeMessage (mailSession); 
		email.setRecipients( Message.RecipientType.TO, InternetAddress.parse(msg.getTo()) ); 
		if (!msg.getCc().trim().equals("")) { 
			email.setRecipients( Message.RecipientType.CC, InternetAddress.parse(msg.getCc()) ); 
		} 
		if (!msg.getBcc().trim().equals("")) { 
			email.setRecipients( Message.RecipientType.BCC, InternetAddress.parse(msg.getBcc()) ); 
		} 
		email.setFrom( new InternetAddress(msg.getFrom())); 
		email.setSubject(msg.getSubject()); 
		email.setContent( msg.getText(), "text/plain" ); 
		
		Transport tr = mailSession.getTransport("smtp"); 
		tr.connect(SMTP_HOST_NAME, usuario, senha); 
		email.saveChanges(); // don't forget this 
		tr.sendMessage(email, email.getAllRecipients()); 
		tr.close(); 
		
	} catch (Exception e) { 
		System.out.println(" [E] ERROR: "+e); 
		e.printStackTrace(System.out); 
		throw e; 
	} 
	System.out.println(" [#] Email successfully sent"); 
	return; 
}

Se alguem souber agradeço muito!

1 Resposta

T

É possível anexar arquivos usando só o Javamail, mas é bastante complicado e envolve você entender o padrão MIME. Em vez disso, use o Commons Email (que requer o Javamail), que encapsula essa parte complexa do Javamail.

http://commons.apache.org/email/

Criado 16 de janeiro de 2009
Ultima resposta 16 de jan. de 2009
Respostas 1
Participantes 2