Problema com anexo de arquivo xml
Bom dia.
Estou enviando normalmente email com anexo baseado no código abaixo,
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.
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
Curtidas 0
Respostas
Davi Costa
09/06/2011
Seguinte, como vc testou local sua máquina achou o fileName para instanciar o File passado como parametro.
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
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
Barcelos.java
09/06/2011
Estou utilizando essa linha
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.
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
Barcelos.java
09/06/2011
vou te passar o stack trace
DEBUG SMTP: useEhlo true, useAuth false
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
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
Davi Costa
09/06/2011
É puro e simplesmente o que te falei. Vc passa um caminho local mas o programa está sendo rodado de um servidor.
Att Davi
Att Davi
GOSTEI 0
Davi Costa
09/06/2011
Nesse acminho no seu servidor vc não tem esse arquivo:
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");
}
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
Barcelos.java
09/06/2011
Entendi.
agora eu preciso que envie esse arquivo somente para a pasta temp do meu servidor servidor.
tem uma forma de fixar isso?
Att.
R. Barcelos.
GOSTEI 0
Davi Costa
09/06/2011
Já havia falado isso tb, vc pode pegar o array de bytes ou o InputStream e criar esse arquivo na pasta que vc quiser no servidor recomendo até a criar um tempFile (pesquise caso não conheça) pq daí ele cria um arquivo temporário que logo vai se estinguir. Agoar como fazer isso é que vai ser o seu trabalho.. vai depender de muita coisa.. qual framework usa e por aí vai.. mas não é tão difícil não.. agora existe muitas soluções vai só ter que usar a que serve para vc... para jsf ou struts, ou Vraptor..... qual implementação jsf vc usa e por aí vai...
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
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
Barcelos.java
09/06/2011
Bom dia.
Obrigado pelas dicas.
Estou quase lá.
consegui enviar o arquivo xml para um diretorio que está compartilhado na rede,
agora na hora de enviar email não estou conseguindo buscar o arquivo xml completo
ele anexa porém o arquivo anexado está com byte zero e o arquivo tem 1k
estou precisando fazer isso agora
"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
" Davi vc tem alguma dica de como pego esse arquivo completo nesse diretorio da rede. Att. R. Barcelos.
" Davi vc tem alguma dica de como pego esse arquivo completo nesse diretorio da rede. Att. R. Barcelos.
GOSTEI 0
Davi Costa
09/06/2011
No código do seu primeiro post, vc tem essa linha:
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
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
Barcelos.java
09/06/2011
Consegui localizar o arquivo, agora não consigo anexa-lo.
Att
R.Barcelos
GOSTEI 0
Davi Costa
09/06/2011
MimeMultipart lMultiPartRoot = new MimeMultipart("mixed");
// 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
// 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
Dyego Carmo
09/06/2011
Resolvido ?
Se sim , poderia fechar ?
Valeu !
Se sim , poderia fechar ?
Valeu !
GOSTEI 0