Enviando e-mail com anexo
JavaMail API fornece classes para enviar o e-mail junto com o anexo respeitando as políticas de envio de e-mail, seus protocolos e o formato da mensagem.
O Exemplo abaixo mostra como enviar um e-mail com um arquivo em anexo.
|
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.io.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.mail.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.mail.internet.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.activation.*;</SPAN>
<B><SPAN lang=EN-US >public class </SPAN></B><SPAN lang=EN-US >sendfile </SPAN>
<SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >public static void </SPAN></B><SPAN lang=EN-US >main(String[] args) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(args.length != </SPAN><SPAN lang=EN-US >5</SPAN><SPAN lang=EN-US >) </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >System.out.println(</SPAN><SPAN lang=EN-US >"usage: java sendfile <to> <from> <smtp> <file>"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >System.exit(</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >String to = args[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >];</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >String from = args[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >];</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >String host = args[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >];</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >String filename = args[</SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >];</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >String msgText1 = </SPAN><SPAN lang=EN-US >"Enviando arquivo.\n"</SPAN><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >String subject = </SPAN><SPAN lang=EN-US >"Enviando arquivo"</SPAN><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US > </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >// cria algumas propriedades e obtem uma sessao padrao</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >Properties props = System.getProperties();</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >props.put(</SPAN><SPAN lang=EN-US >"mail.smtp.host"</SPAN><SPAN lang=EN-US >, host);</SPAN>
<SPAN lang=EN-US > </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >Session session = Session.getInstance(props, </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >try </SPAN></B>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >// cria a mensagem</SPAN>
<SPAN lang=EN-US >MimeMessage msg = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >MimeMessage(session);</SPAN>
<SPAN lang=EN-US >msg.setFrom(</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >InternetAddress(from));</SPAN>
<SPAN lang=EN-US >InternetAddress[] address = {</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >InternetAddress(to)};</SPAN>
<SPAN lang=EN-US >msg.setRecipients(Message.RecipientType.TO, address);</SPAN>
<SPAN lang=EN-US >msg.setSubject(subject);</SPAN>
<SPAN lang=EN-US >// cria a primeira parte da mensagem</SPAN>
<SPAN lang=EN-US >MimeBodyPart mbp1 = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >MimeBodyPart();</SPAN>
<SPAN lang=EN-US >mbp1.setText(msgText1);</SPAN>
<SPAN lang=EN-US >// cria a segunda parte da mensage</SPAN>
<SPAN lang=EN-US >MimeBodyPart mbp2 = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >MimeBodyPart();</SPAN>
<SPAN lang=EN-US >// anexa o arquivo na mensagem</SPAN>
<SPAN lang=EN-US >FileDataSource fds = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >FileDataSource(filename);</SPAN>
<SPAN lang=EN-US >mbp2.setDataHandler(</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >DataHandler(fds));</SPAN>
<SPAN lang=EN-US >mbp2.setFileName(fds.getName());</SPAN>
<SPAN lang=EN-US >// cria a Multipart</SPAN>
<SPAN lang=EN-US >Multipart mp = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >MimeMultipart();</SPAN>
<SPAN lang=EN-US >mp.addBodyPart(mbp1);</SPAN>
<SPAN lang=EN-US >mp.addBodyPart(mbp2);</SPAN>
<SPAN lang=EN-US >// adiciona a Multipart na mensagem</SPAN>
<SPAN lang=EN-US >msg.setContent(mp);</SPAN>
<SPAN lang=EN-US >// configura a data: cabecalho</SPAN>
<SPAN lang=EN-US >msg.setSentDate(</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Date());</SPAN>
<SPAN lang=EN-US >// envia a mensagem</SPAN>
<SPAN lang=EN-US >Transport.send(msg);</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >} </SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(MessagingException mex) </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >mex.printStackTrace();</SPAN>
<SPAN lang=EN-US >Exception ex = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >((ex = mex.getNextException()) != </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) {</SPAN>
<SPAN lang=EN-US >ex.printStackTrace();</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
|