Fórum Problema com anexo de arquivo xml #402714
09/06/2011
0
mas percebi que quando gero war e ponho em ambiente de producao
envio o email da mesma forma, mas o anexo fica com 0(zero)
bytes, alguem tem alguma dica, utilizo o tomcat6, jsf 1.2 segue o código: public class Email {
// ENVIAR EMAIL
public void enviaEmailAnexo(String from , String to,String fileName ,String auth, String mensagem, String assunto ){
//INSTACIA A PROPRIEDADE
Properties props = new Properties();
//DADOS DO SERVIDOR
props.put("mail.debug" , "true"); //Mostrar passo-a-passo no console
props.put("mail.transport.protocol", "smtp"); //Indica que será usado SMTPS
props.put("mail.smtp.host" , "XX.XX.XX.XX"); //Host do servidor de envio
props.put("mail.smtp.port" , "25"); //Porta do servidor de envio
props.put("mail.smtp.auth" , "false"); //Usa uma conta autenticada
try {
Session session = Session.getInstance(props,null); //PEGA A SESSAO COM AS PRIPRIEDADES
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from)); //E-MAIL DE ORIGEM
// ASSUNDO DO EMAIL
msg.setSubject(assunto);
//SETA O CORPO DA MENSAGEM
//msg.setText(mensagem);
msg.setRecipient(Message.RecipientType.TO,new InternetAddress(to)); //E-MAIL DE DESTINO
msg.setSentDate(new Date()); //DATA ATUAL
BodyPart mbp1 = new MimeBodyPart();
mbp1.setText(mensagem);
BodyPart mbp2 = new MimeBodyPart();
mbp2.setText("");
FileDataSource fds = new FileDataSource(fileName);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
msg.setContent(mp);
Transport.send(msg);
} catch (AddressException e) {
// mensagem do e-mail invalido
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//excluir
File f = new File(fileName);
if (f.exists())
f.delete();
}
} }
Chamada de método:
Email email = new Email();
String de = "origem@conta.br";
String para = "destivo@conta.br";
String doc = "\\\\XX.XX.XX.XX\\TEMP\\" +object()+ ".xml";
String bol = "true";
String assunto = "XXXXX";
String mensagem = "XXXX";
email.enviaEmailAnexo(de, para, doc, bol,mensagem, assunto); Agradeço qualquer ajuda.
Atenciosamente, R. Barcelos.
Barcelos.java
Curtir tópico
+ 0Posts
09/06/2011
Davi Costa
No seu ambiente de produção não.
Existe muitas formas do seu sistema pegar esse file (o array de bytes e instanciar o file mesmo no cliente) e vc mandar seu arquivo como anexo.
A solução mas simples se bastar é só escolher arquivos que fikem na intranet. Porém se o cliente for linux e cliente windows vai ter que ter cuidado com as barras \ (windows) e linux (/), tem como tratar isso no seu código. E tb tem que se atentar se seu servidor tem alguma máscara nas pastas públicas de arquivos
att Davi
Gostei + 0
09/06/2011
Barcelos.java
FileWriter arquivo = new FileWriter(new File("c:/temp/"+ aObjeto()+ "arquivo.xml"));
enviando o arquivo para o servidor. estou utilizando esse mesmo caminho
String doc = "\\\\XX.XX.XX.XX\\TEMP\\" +object()+ ".xml"; para pegar o arquivo já criado
e esse mesmo eu anexo. o servidor é windows.
Gostei + 0
09/06/2011
Barcelos.java
DEBUG SMTP: trying to connect to host "10.1.1.40", port 25, isSSL false
220 svrzimbra.isgh.org.br ESMTP Postfix
DEBUG SMTP: connected to host "10.1.1.40", port: 25 EHLO NTI-023.hgwa.org.br
250-svrzimbra.isgh.org.br
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "10240000"
DEBUG SMTP: Found extension "VRFY", arg ""
DEBUG SMTP: Found extension "ETRN", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<compras.hgwa@isgh.org.br>
250 2.1.0 Ok
RCPT TO:<arquivo.hgwa@isgh.org.br>
250 2.1.5 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP: arquivo.hgwa@isgh.org.br
DATA
354 End data with <CR><LF>.<CR><LF>
java.io.FileNotFoundException: \\10.1.1.50\TEMP\3607-11arquivoBionexo.xml (O sistema não pode encontrar o arquivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at javax.activation.FileDataSource.getInputStream(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1383)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:852)
at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:453)
at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:98)
at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1383)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1743)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:888)
at javax.mail.Transport.send0(Transport.java:191)
at javax.mail.Transport.send(Transport.java:120)
at br.org.isgh.compras.util.Email.enviaEmailBionexoAnexo(Email.java:172)
at br.org.isgh.compras.util.XmlGeral.geraXml(XmlGeral.java:186)
at br.org.isgh.compras.forms.SolicitacaoItemForm.concluiSolicitacao(SolicitacaoItemForm.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
javax.mail.MessagingException: IOException while sending message;
nested exception is:
java.io.FileNotFoundException: \\10.1.1.50\TEMP\3607-11arquivoBionexo.xml (O sistema não pode encontrar o arquivo especificado)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:930)
at javax.mail.Transport.send0(Transport.java:191)
at javax.mail.Transport.send(Transport.java:120)
at br.org.isgh.compras.util.Email.enviaEmailBionexoAnexo(Email.java:172)
at br.org.isgh.compras.util.XmlGeral.geraXml(XmlGeral.java:186)
at br.org.isgh.compras.forms.SolicitacaoItemForm.concluiSolicitacao(SolicitacaoItemForm.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: \\10.1.1.50\TEMP\3607-11arquivoBionexo.xml (O sistema não pode encontrar o arquivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at javax.activation.FileDataSource.getInputStream(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1383)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:852)
at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:453)
at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:98)
at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1383)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1743)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:888)
... 42 more
Gostei + 0
09/06/2011
Davi Costa
Att Davi
Gostei + 0
09/06/2011
Davi Costa
FileWriter arquivo = new FileWriter(new File("c:/temp/"+ aObjeto()+ "arquivo.xml"));
Tanto é que vc pode testar uma linha acima dessa:
File aux = new File("c:/temp/"+ aObjeto()+ "arquivo.xml");
if(!aux.exist()){
System.out.println("arquivo não encontrado");
}
Gostei + 0
09/06/2011
Barcelos.java
Gostei + 0
09/06/2011
Davi Costa
Porém se vc garantir que esse arquivo está em um lugar público da rede que seu servidor encherga bsta vc recuperá-lo pegando o caminho sem vc engessar o caminho como vc fez e mandar esse arquivo como anexo mole mole.... o problema é que amarra o caminho do arquivo para auqele c:\temp... vc deve amarrar se usar a estratégia de cima para criar os temp files... mas só para criar de onde vai pegar o arquivo.. não deve ser amarrado
Att Davi
Gostei + 0
10/06/2011
Barcelos.java
" Davi vc tem alguma dica de como pego esse arquivo completo nesse diretorio da rede. Att. R. Barcelos.
Gostei + 0
10/06/2011
Davi Costa
FileDataSource fds = new FileDataSource(fileName);
essa String fileName tem que ser o caminho completo do seu arquivo onde vc está guardando no servidor.
Já testou assim, coloca aquele if que postei anteriormente para ver se ele tá pegando o arquivo de lá mesmo.
att Davi
Gostei + 0
10/06/2011
Barcelos.java
Gostei + 0
10/06/2011
Davi Costa
// Cria o BodyPart do conteúdo do e-mail:
MimeBodyPart lBodyPartCorpo = new MimeBodyPart();
lBodyPartCorpo.setContent(conteudo, "text/html");
lMultiPartRoot.addBodyPart(lBodyPartCorpo);
DataSource lFileDataSource = new FileDataSource(lArquivoTemporario);
// Cria o BodyPart do anexo:
MimeBodyPart lBodyPartAnexo = new MimeBodyPart();
lBodyPartAnexo.setDisposition(Part.ATTACHMENT);
lBodyPartAnexo.setDataHandler(new DataHandler(lFileDataSource));
lBodyPartAnexo.setFileName(nomeArquivo);
lMultiPartRoot.addBodyPart(lBodyPartAnexo);
lMineMessage.setContent(lMultiPartRoot);
lMineMessage.saveChanges();
adapta tua solução para essa
att Davi
Gostei + 0
15/06/2011
Dyego Carmo
Se sim , poderia fechar ?
Valeu !
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)