Pessoal, estou com um probleminha na hora de enviar e-mail com anexo, só estar dando erro na seguinte linha do código:
Seguinte erro:
[color=red]cannot find symbol
symbol: method attach(org.apache.commons.mail.EmailAttachment)[/color]
publicvoidenviarMensagem(Stringl,Stringsenha,Stringassunto,Stringarea,Stringpara,Stringendereco)throwsEmailException{EmailAttachmentattachment=newEmailAttachment();attachment.setPath(endereco);//caminho da imagemattachment.setDisposition(EmailAttachment.ATTACHMENT);attachment.setDescription("Anexo");attachment.setName("ArquivoAnexo");simpleEmail.setHostName(hostName);simpleEmail.setAuthentication(l+"@gmail.com",senha);simpleEmail.setSSL(true);simpleEmail.setFrom(l+"@gmail.com");simpleEmail.addTo(para);simpleEmail.setSubject(assunto);simpleEmail.setMsg(area);simpleEmail.attach(attachment);//ERRO AQUI !!!!!!!!!!!simpleEmail.send();}
Eu utilizo o MailJava para poder enviar e-mails com anexo do meu sistema.
A única diferença para o seu pode ser que o meu também pode enviar uma lista de anexos.
Segue uma parte do código que eu utilizo:
MailJavamj=newMailJava();Stringassunto=tela.getConteudoTxtAssunto();StringbodyMessage=tela.getConteudoMensagem();//configuracoes de enviomj.setSmtpHostMail("smtp.igrejabatistaviva.com");//mj.setSmtpPortMail("587");mj.setSmtpAuth("true");mj.setSmtpStarttls("true");mj.setUserMail("*******");mj.setFromNameMail("Igreja Batista Viva");mj.setPassMail("****");mj.setCharsetMail("ISO-8859-1");mj.setSubjectMail(assunto);mj.setBodyMail(bodyMessage);mj.setTypeTextMail(MailJava.TYPE_TEXT_HTML);//sete quantos destinatarios desejarMap<String,String>map=newHashMap<String,String>();String[]mails=ControleTelaMembros.getMails();String[]names=ControleTelaMembros.getNames();for(inti=0;i<mails.length;i++){map.put(mails[i],names[i]);}mj.setToMailsUsers(map);//seta quatos anexos desejarList<String>files=newArrayList<String>();List<AnexoMail>anexos=newArrayList();anexos=tela.getAllItems();for(inti=0;i<anexos.size();i++){files.add(anexos.get(i).getCaminho());}//files.add("C:\\Users\\Andre\\Pictures\\11.jpg");//files.add("C:\\images\\hover_next.png");//files.add("C:\\images\\hover_prev.png");mj.setFileMails(files);try{newMail().senderMail(mj);JOptionPane.showMessageDialog(null,"E-mail enviado com sucesso!","SUCESSO",JOptionPane.INFORMATION_MESSAGE);}catch(UnsupportedEncodingExceptione){e.printStackTrace();}catch(MessagingExceptione){e.printStackTrace();}}}
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packageModel;/** * * @author Andre */publicclassAnexoMail{privateStringcaminho;publicStringgetCaminho(){returncaminho;}publicvoidsetCaminho(Stringcaminho){this.caminho=caminho;}}
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packageControl;importjava.util.List;importjava.util.Map;/** * * @author Andre */publicclassMailJava{//indica se o formato de texto será texto ou htmlpublicstaticfinalStringTYPE_TEXT_PLAIN="text/plain";publicstaticfinalStringTYPE_TEXT_HTML="text/html";//indica qual será o servidor de email(gmail, hotmail...) privateStringsmtpHostMail;//indica a porta de acesso ao servidorprivateStringsmtpPortMail;//indica que a necessidade de autenticação no servidor(true ou false)privateStringsmtpAuth;//indica ao servidor que ele está recebendo uma conexão seguraprivateStringsmtpStarttls;//nome do remetente do emailprivateStringfromNameMail;//email do remetenteprivateStringuserMail;//senha do email do remetenteprivateStringpassMail;//assunto do emailprivateStringsubjectMail;//corpo do email, onde estará o texto da mensagemprivateStringbodyMail;//lista com email e nome dos destinatáriosprivateMap<String,String>toMailsUsers;//lista contendo os arquivos anexosprivateList<String>fileMails;//charset, no caso de html é necessário privateStringcharsetMail;//tipo do formato da mensagem, texto ou htmlprivateStringtypeTextMail;// gere os métodos getters and setterspublicStringgetBodyMail(){returnbodyMail;}publicvoidsetBodyMail(StringbodyMail){this.bodyMail=bodyMail;}publicStringgetCharsetMail(){returncharsetMail;}publicvoidsetCharsetMail(StringcharsetMail){this.charsetMail=charsetMail;}publicList<String>getFileMails(){returnfileMails;}publicvoidsetFileMails(List<String>fileMails){this.fileMails=fileMails;}publicStringgetFromNameMail(){returnfromNameMail;}publicvoidsetFromNameMail(StringfromNameMail){this.fromNameMail=fromNameMail;}publicStringgetPassMail(){returnpassMail;}publicvoidsetPassMail(StringpassMail){this.passMail=passMail;}publicStringgetSmtpAuth(){returnsmtpAuth;}publicvoidsetSmtpAuth(StringsmtpAuth){this.smtpAuth=smtpAuth;}publicStringgetSmtpHostMail(){returnsmtpHostMail;}publicvoidsetSmtpHostMail(StringsmtpHostMail){this.smtpHostMail=smtpHostMail;}publicStringgetSmtpPortMail(){returnsmtpPortMail;}publicvoidsetSmtpPortMail(StringsmtpPortMail){this.smtpPortMail=smtpPortMail;}publicStringgetSmtpStarttls(){returnsmtpStarttls;}publicvoidsetSmtpStarttls(StringsmtpStarttls){this.smtpStarttls=smtpStarttls;}publicStringgetSubjectMail(){returnsubjectMail;}publicvoidsetSubjectMail(StringsubjectMail){this.subjectMail=subjectMail;}publicMap<String,String>getToMailsUsers(){returntoMailsUsers;}publicvoidsetToMailsUsers(Map<String,String>toMailsUsers){this.toMailsUsers=toMailsUsers;}publicStringgetTypeTextMail(){returntypeTextMail;}publicvoidsetTypeTextMail(StringtypeTextMail){this.typeTextMail=typeTextMail;}publicStringgetUserMail(){returnuserMail;}publicvoidsetUserMail(StringuserMail){this.userMail=userMail;}}
orlandogpe
Bacana . Eu tenho usado essa solução da apache, até o momento tem funcionado sem problemas.
Ela tb tem suporte para vários anexos, mas pelo jeito tem que criar uma nova instancia da classe “EmailAttachment” para cada anexo, o que é mais trabalhoso do que MailJava.
O que realmente uso e gostei da solução da apache foi a opção de envio de texto em formato HTML.
andre_bento
Olá amigo.
É ficou bem legal essa forma de envio.
Ficou de fácil manutenção e entendimento.
Testem ae e qualquer coisa me avisem!
Abraços