on 2012 Jul 05 2:54 PM
Bom dia senhores.
Estou com um cliente que me informou que o e-mail com o XML está sendo barrado para alguns clientes dele, pois o servidor de e-mail deles está acusando a presença de um arquivo Untitled.bin.
Realizei a configuração de envio do e-mail com o Mail XSD e o envio está ok, com o Remetente, Destinatário, Assunto e Corpo do Email sendo montados dinamicamente. No Configuration, estou utilizando as opções 'Use Mail Package', Content Enconding = None e 'Keep Attachments'.
O estranho é que eu coloco o meu e-mail e o do cliente e eu recebo o e-mail corretamente, inclusive com o XML da NF-e, porém o cliente retorna esse erro.
Abaixo vocês podem conferir o e-mail de falha:
EDITADO PELA MODERAÇÃO
Message was edited by: Henrique Pinto
Gabriel,
Não tenho mais detalhes sobre o seu erro, mas desenvolvi um Module que monta o email de envio ao Clliente, voce deverá compilar o codigo no Developer Studio.
Ele faz o tratamento de xml de NF-e, Cancelamento e CC-e, jogando o payload do xml para attachment, removendo qualquer outro payload e dando o nome correto ao xml.
Outra funcionalidade importante é a montagem do corpo do email com um resumo das informações da Nota, Cancelamento, CC-e
Voce deverá utilizar Variable Transport Binding ao invés do Mail Package.
package b2b.br.com.netweaver;
/**
@author Luis Naves
@ejbHome <{com.sap.aii.af.mp.module.ModuleHome}>
@ejbLocal <{com.sap.aii.af.mp.module.ModuleLocal}>
@ejbLocalHome <{com.sap.aii.af.mp.module.ModuleLocalHome}>
@ejbRemote <{com.sap.aii.af.mp.module.ModuleRemote}>
@stateless
*/
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import com.sap.aii.af.mp.module.*;
import com.sap.aii.af.ra.ms.api.*;
import com.sap.aii.af.service.auditlog.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.InputStream;
/**
@ejbHome <
>
>
@ejbLocalHome <
>
>
*/
public class SetToB2BParameters implements SessionBean, Module {
private SessionContext myContext;
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void setSessionContext(SessionContext context) {
myContext = context;
}
public void ejbCreate() throws CreateException {
}
public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData) throws ModuleException {
try {
Message msg = (Message) inputModuleData.getPrincipalData();
if (msg.getMessageDirection() == MessageDirection.INBOUND)
amk = new AuditMessageKey(msg.getMessageId(), AuditDirection.INBOUND);
else
amk = new AuditMessageKey(msg.getMessageId(), AuditDirection.OUTBOUND);
Payload payload = msg.getDocument();
String fileName = "";
InputStream resp = payload.getInputStream();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(resp);
Node node = (Node) doc.getElementsByTagName("chNFe").item(0);
if (node.hasChildNodes() && !node.getFirstChild().getNodeValue().equals("")) {
fileName = node.getFirstChild().getNodeValue();
// Show access key
Audit.addAuditLogEntry(amk, AuditLogStatus.SUCCESS, "chNFe: " + fileName);
}
String content = "Caro cliente,
";
// Change attachment filename according to file type
Node xmlType = (Node) doc.getElementsByTagName("cStat").item(0);
if (xmlType.hasChildNodes()) {
switch (Integer.parseInt(xmlType.getFirstChild().getNodeValue())) {
case 100 :
content =
content
+ "A NF-e: "
+ fileName
+ " foi autorizada na base de dados da SEFAZ
Valor Total: "
+ doc.getElementsByTagName("vNF").item(0).getFirstChild().getNodeValue()
+ "
Protocolo: "
+ doc.getElementsByTagName("nProt").item(0).getFirstChild().getNodeValue();
fileName = node.getFirstChild().getNodeValue() + "-procNFe.xml";
break;
case 101 :
content =
content
+ "A NF-e: "
+ fileName
+ " foi cancelada na base de dados da SEFAZ
Motivo: "
+ doc.getElementsByTagName("xJust").item(0).getFirstChild().getNodeValue()
+ "
Protocolo: "
+ doc.getElementsByTagName("nProt").item(0).getFirstChild().getNodeValue();
fileName = node.getFirstChild().getNodeValue() + "-procCancNFe.xml";
break;
case 135 :
content =
content
+ "Uma carta de corre\u00e7\u00e3o eletr\u00f4nica foi autorizada para a NF-e: "
+ fileName
+ " na base de dados da SEFAZ
Corre\u00e7\u00e3o: "
+ doc.getElementsByTagName("xCorrecao").item(0).getFirstChild().getNodeValue()
+ "
Protocolo: "
+ doc.getElementsByTagName("nProt").item(0).getFirstChild().getNodeValue();
fileName = node.getFirstChild().getNodeValue() + "-procEventoNFe.xml";
break;
}
}
content = content + "
Este e-mail foi enviado de forma autom\u00e1tica, favor n\u00e3o respond\u00ea-lo.
Segue o XML em anexo
NF-e Empresa";
Audit.addAuditLogEntry(amk, AuditLogStatus.SUCCESS, "Attachment name: " + fileName);
XMLPayload text = msg.createXMLPayload();
text.setContent(content.getBytes("UTF-8"));
text.setContentType("text/plain; charset=utf-8");
text.setAttribute("Content-Transfer-Encoding", "quoted-printable");
text.setAttribute("Content-Description", "Body");
text.setAttribute("Content-Disposition", "inline");
msg.setDocument(text);
payload.setContentType("text/xml;charset = "UTF-8";" + "name="" + fileName);
payload.setAttribute("Content-Description", fileName);
payload.setAttribute("Content-Disposition", "attachment; filename="" + fileName + """);
msg.addAttachment(payload);
inputModuleData.setPrincipalData(msg);
} catch (Exception e) {
throw new ModuleException(e);
}
return inputModuleData;
}
private AuditMessageKey amk;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Boa tarde Gabriel.
Estou com o mesmo problema.
Alguns clientes estão reclamando desse arquivo, porém enviei para mais de um email meu diferente e em nenhum esse arquivo aparece.
Você resolveu?
Obrigado
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Boa noite Alexandre.
Infelizmente não encontrei a solução, pois na época o cliente resolveu instalar o GRC 10.0 e, feito isso, fizeram o Envio de E-mail do zero através de um Java Mapping, o que resolveu o problema.
No meu caso, acredito que o problema estava no firewall (ou de quem envia o e-mail ou de quem recebe), visto que eu enviava para o meu e-mail e recebia normalmente.
Os seus e-mails recebem o que? O XML?
Abraços!
Consegui resolver o problema.
O Java Mapping gera todas as informações do Email, to, corpo e o anexo com o XML da nota.
Tive que especificar um nome para o Content Type do Multpart, assim evitando a geração do nome default untitled.bin no header do MIME
Text contentTypeText = docout.createTextNode("multipart/mixed;boundary=--AaZz;filename=untitled.txt");
[]´s
User | Count |
---|---|
6 | |
5 | |
4 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.