Categorias

Enviar emails com arquivos anexos em JSP

Em muitas situações é preciso enviar emails utilizando arquivos em anexo.
Este código é ideal para realizar esta tarefa.

PS: Para testar o código atente para as variáveis que devem ser modificadas.

<%@ page import="java.util.Properties"%>
<%@ page import="java.util.Date"%>
<%@ page import="java.io.*"%>
<%@ page import="javax.mail.*"%>
<%@ page import="javax.activation.*"%>
<%@ page import="javax.mail.internet.*"%>

<%
  //Endereço de SMTP para enviar o email
  String smtpServer   = "localhost.com";

  String toMail       = "[email protected]";
  String toName       = "Nome Destinatario";

  String fromMail     = "[email protected]";
  String fromName     = "Nome Remetente";

  String subject      = "Mensagem com arquivo anexo";
  String body         = "Esta mensagem contém um arquivo anexo.";
  String fileToSend   = "c:\\command.com";

  try {

    Properties props = new Properties();
    props.setProperty("mail.transport.protocol","smtp");
    props.setProperty("mail.host",smtpServer);
    props.setProperty("mail.user",fromMail);
    props.setProperty("mail.password","");

    Session mailSession = Session.getDefaultInstance(props, null);

    Message msg = new MimeMessage(mailSession);
    msg.setFrom( new InternetAddress(fromMail,fromName) );
    msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail,toName) );
    msg.setSubject( subject );

    // Adiciona o texto do corpo do email
    MimeBodyPart textPart = new MimeBodyPart();
    textPart.setContent(body,"text/plain");

    // Abre e anexa o arquivo
    MimeBodyPart attachFilePart = new MimeBodyPart();
    FileDataSource fds = new FileDataSource(fileToSend);
    attachFilePart.setDataHandler(new DataHandler(fds));
    attachFilePart.setFileName(fds.getName());

    // Monta a mensagem SMTP
    Multipart mp = new MimeMultipart();
    mp.addBodyPart(textPart);
    mp.addBodyPart(attachFilePart);
    msg.setContent(mp);

    Transport.send(msg);

    out.println("Email enviado...");

    } catch (Exception e) { 
      e.printStackTrace(); 
  }
%>