diff --git a/Class Library/ActiveUp.Net.Common/Parser.cs b/Class Library/ActiveUp.Net.Common/Parser.cs index fcdd469..97e7c6a 100644 --- a/Class Library/ActiveUp.Net.Common/Parser.cs +++ b/Class Library/ActiveUp.Net.Common/Parser.cs @@ -117,20 +117,28 @@ private static ContentType GetContentType(string input) /// private static ContentDisposition GetContentDisposition(string input) { - ContentDisposition field = new ContentDisposition(); - //TODO: include TAB detection in Regex - field.Disposition = Regex.Match(input.Replace("\t", ""), @"(?<=: ?)\S+?(?=([;\s]|\Z))").Value; + var field = new ContentDisposition + { + //TODO: include TAB detection in Regex + Disposition = Regex.Match(input.Replace("\t", ""), @"(?<=: ?)\S+?(?=([;\s]|\Z))").Value + }; //TODO: include TAB detection in Regex Match parammatch = Regex.Match(input.Replace("\t", ""), @"(?<=;[ \t]?)[^;]*=[^;]*(?=(;|\Z))"); for (; parammatch.Success; parammatch = parammatch.NextMatch()) field.Parameters.Add(FormatFieldName(parammatch.Value.Substring(0, parammatch.Value.IndexOf('='))), parammatch.Value.Substring(parammatch.Value.IndexOf('=') + 1).Replace("\"", "").Trim('\r', '\n')); return field; } + [Obsolete("We are migrating ASCII default char structure to UTF8, please, use GetUtf8ByteCountOfPart() as a default.")] private static int GetASCIIByteCountOfPart(string part) { return Encoding.ASCII.GetByteCount(part); } + private static int GetUtf8ByteCountOfPart(string part) + { + return Encoding.UTF8.GetByteCount(part); + } + /// /// Parses the sub parts. /// @@ -138,27 +146,27 @@ private static int GetASCIIByteCountOfPart(string part) private static void ParseSubParts(ref MimePart part, Message message) { string boundary = part.ContentType.Parameters["boundary"]; - string parentPartAsciiBody = ToUtf8(part.BinaryContent); + string parentPartUtf8Body = ToUtf8(part.BinaryContent); byte[] parentPartBinary = part.BinaryContent; Logger.AddEntry(typeof(Parser), "boundary : " + boundary); - string[] arrpart = Regex.Split(parentPartAsciiBody, @"\r?\n?" + Regex.Escape("--" + boundary)); + string[] arrpart = Regex.Split(parentPartUtf8Body, @"\r?\n?" + Regex.Escape("--" + boundary)); foreach (var strpart in arrpart) { if (string.IsNullOrWhiteSpace(strpart)) continue; - int bounaryByteLen = GetASCIIByteCountOfPart(parentPartAsciiBody.Substring(0, parentPartAsciiBody.IndexOf(strpart))); - int binaryPartLen = bounaryByteLen + GetASCIIByteCountOfPart(strpart); - parentPartAsciiBody = null; + int bounaryByteLen = GetUtf8ByteCountOfPart(parentPartUtf8Body.Substring(0, parentPartUtf8Body.IndexOf(strpart))); + int binaryPartLen = bounaryByteLen + GetUtf8ByteCountOfPart(strpart); + parentPartUtf8Body = null; //complete Part (incl. boundary) byte[] binaryPart = new byte[binaryPartLen]; Array.Copy(parentPartBinary, binaryPart, binaryPart.Length); //Body only (without Boundary) - byte[] binaryBody = new byte[GetASCIIByteCountOfPart(strpart)]; + byte[] binaryBody = new byte[GetUtf8ByteCountOfPart(strpart)]; Array.Copy(binaryPart, bounaryByteLen, binaryBody, 0, binaryBody.Length); //Remove Subpart from ParentPart @@ -171,7 +179,7 @@ private static void ParseSubParts(ref MimePart part, Message message) GC.WaitForPendingFinalizers(); parentPartBinary = tmp; - parentPartAsciiBody = ToUtf8(parentPartBinary); + parentPartUtf8Body = ToUtf8(parentPartBinary); tmp = null; if (!strpart.StartsWith("--") && !string.IsNullOrEmpty(strpart)) @@ -497,7 +505,7 @@ private static void ParseBody(byte[] binaryData, MimePart part, int bodyStart) { if (bodyStart < part.OriginalContent.Length) { - string body = part.OriginalContent.Substring(bodyStart); + var body = part.OriginalContent.Substring(bodyStart); part.BinaryContent = GetBinaryPart(binaryData, body); } } @@ -506,23 +514,26 @@ private static void ParseBody(byte[] binaryData, MimePart part, int bodyStart) /// Parses the MIME part. /// /// The data. + /// Message object to update /// public static MimePart ParseMimePart(byte[] binaryData, Message message) { - MimePart part = new MimePart(); - part.ParentMessage = message; - part.OriginalContent = ToUtf8(binaryData); //ASCII content for header parsing + var part = new MimePart + { + ParentMessage = message, + OriginalContent = ToUtf8(binaryData) //UTF8 content for header parsing + }; try { // Separate header and body. - int headerEnd = Regex.Match(part.OriginalContent, @".(?=\r?\n\r?\n)").Index + 1; - int bodyStart = Regex.Match(part.OriginalContent, @"(?<=\r?\n\r?\n).").Index; + var headerEnd = Regex.Match(part.OriginalContent, @".(?=\r?\n\r?\n)").Index + 1; + var bodyStart = Regex.Match(part.OriginalContent, @"(?<=\r?\n\r?\n).").Index; //TODO: remove this workaround if (bodyStart == 0) { - int indexBody = part.OriginalContent.IndexOf("\r\n\r\n"); + var indexBody = part.OriginalContent.IndexOf("\r\n\r\n"); if (indexBody > 0) bodyStart = indexBody; } @@ -533,12 +544,12 @@ public static MimePart ParseMimePart(byte[] binaryData, Message message) // Build the part tree. // This is a container part. - if (part.ContentType.Type.ToLower().Equals("multipart")) + if (part.ContentType.Type.ToLower().Trim().Equals("multipart")) { ParseSubParts(ref part, message); } // This is a nested message. - else if (part.ContentType.Type.ToLower().Equals("message")) + else if (part.ContentType.Type.ToLower().Trim().Equals("message")) { // TODO: Create an interpreter to this. } @@ -560,9 +571,9 @@ public static MimePart ParseMimePart(byte[] binaryData, Message message) } - private static byte[] GetBinaryPart(byte[] srcData, string asciiPart) + private static byte[] GetBinaryPart(byte[] srcData, string utf8Part) { - byte[] result = new byte[GetASCIIByteCountOfPart(asciiPart)]; + var result = new byte[GetUtf8ByteCountOfPart(utf8Part)]; Array.Copy(srcData, (srcData.Length - result.Length), result, 0, result.Length); return result; diff --git a/Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj b/Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj index fb7ceb6..7e43595 100644 --- a/Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj +++ b/Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj @@ -102,6 +102,9 @@ PreserveNewest + + Always + Always diff --git a/Class Library/ActiveUp.Net.Tests/Common/ParserTests.cs b/Class Library/ActiveUp.Net.Tests/Common/ParserTests.cs index 6d8bcc3..d187255 100644 --- a/Class Library/ActiveUp.Net.Tests/Common/ParserTests.cs +++ b/Class Library/ActiveUp.Net.Tests/Common/ParserTests.cs @@ -3,6 +3,7 @@ using ActiveUp.Net.Mail; using NUnit.Framework; using System.Reflection; +using System.Text; namespace ActiveUp.Net.Tests.Common { @@ -229,7 +230,19 @@ public void MustParseEmlWithContentTransferEncode8Bit() Assert.AreEqual("58caaa74.6625ed0a.22a2d.5376@mx.google.com", message.MessageId); Assert.AreEqual("Special char test çãõáéíóú", message.Subject); Assert.IsFalse(string.IsNullOrWhiteSpace(message.BodyText.Text)); - Assert.AreEqual("Special char test çãõáéíóú", message.BodyText.Text); + Assert.AreEqual("Body special char test çãõáéíóú", message.BodyText.Text); + Assert.IsTrue(string.IsNullOrWhiteSpace(message.BodyHtml.Text)); + } + + [Test(Description = "")] + public void MustParseEmlWithContentTransferEncode8BitUtf8FlowedHistory() + { + var message = Parser.ParseMessageFromFile(_baseDir + "\\resource\\content-transfer-encode-8bit-utf8-flowed.eml"); + Assert.AreEqual("bd502b4d-c631-9ff4-791f-fc01c9efc0e5@EmpresaX.com.br", message.MessageId); + Assert.AreEqual("Re: BLA BLÁ BLA XYZ/ XYZ / TROCA DE PACOTES origem ABC Destino XYZ x XYZ Nfs 666666 / 777777 Fornecedor Xamego INDUSTRIA", message.Subject); + Assert.IsFalse(string.IsNullOrWhiteSpace(message.BodyText.Text)); + var result = message.BodyText.Text; + Assert.AreEqual("This is a multi-part message in MIME format.Boa tarde,\r\n\r\n*Fulano*, conforme o conversado em nosso teste, os dados do erro ja \r\nforam coletados, estamos trabalhando com a máxima urgência afim de \r\nefetuarmos a identificação.\r\n\r\n_Em contato com o cliente estou tentando reproduzir o problema\r\nnesta mensagem._\r\n\r\n_*Ciclano*( Empresa B ), por gentileza, conforme ja conversado, peço, \r\npriorizar acompanhar a estrutura errada deste e-mail._\r\n\r\n\r\nCerta da atenção, agradeço\r\n\r\n\r\n*Reinaldo Coelho *\r\nNosso Grupo\r\n\r\n*\r\nEm 12/04/2017 09:10, Fulano escreveu:\r\n>\r\n> Ok, Agradeço a atenção Ciclano.\r\n>\r\n> *Reinaldo Coelho *\r\n> *Meu cargo atual*\r\n> EmpresaX\r\n> *Fone:(11) 2222-4444 / Ramal: 123 **\r\n> *Email:mary.anne@EmpresaX.com.br \r\n> *\r\n> *Acesse nosso site:www.EmpresaX.com.br *\r\n> Nosso Grupo\r\n>\r\n> *\r\n> Em 12/04/2017 09:01, Florencia Ramos Conceição escreveu:\r\n>>\r\n>>\r\n>>\r\n>> Sim volumes pertencido a XYZ já desembarcarão e segue hoje para \r\n>> araguaina-to\r\n>>\r\n>> Duvidas a disposição.\r\n>>\r\n>>\r\n>> -- \r\n>> *Florencia Ramos Conceição*\r\n>> * Pendencia Fiscal*\r\n>>\r\n>> *Fone:(12)1111-6333*\r\n>> *Email:xyz.pendencias1@EmpresaX.com.br*\r\n>> *Acesse nosso site:www.EmpresaX.com.br *\r\n>>\r\n>> *----- Original Message ----*\r\n>> *From:* mary.anne@EmpresaX.com.br\r\n>> *To:* \"Florencia Ramos Conceição\" (xyz.pendencias1@EmpresaX.com.br)\r\n>> *Cc:* \"Carlão Steave\" (vendasnonorte@prego.com.br)\r\n>> *Date:* Tue, 11 Apr 2017 15:11:37 -0300\r\n>> *Subject:* Re: BLA BLÁ BLA XYZ/ XYZ / TROCA DE PACOTES origem ABC Destino \r\n>>\r\n>> Boa tarde,\r\n>>\r\n>> tentei contato telefônico, porem não foi possível; o cliente que\r\n>> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\n>> yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy\r\n>> informar se o volume do mesmo ja consta em XYZ???\r\n>>\r\n>> Fico no aguardo para informarmos ao cliente.\r\n>>\r\n>> Agradeço\r\n>>\r\n>> att,\r\n>>\r\n>> *Reinaldo Coelho *\r\n>> *Meu cargo atual*\r\n>>\r\n>> *Fone:(11) 2222-4444 / Ramal: 123 **\r\n>> *Email:mary.anne@EmpresaX.com.br\r\n>> *\r\n>> *Acesse nosso site:www.EmpresaX.com.br\r\n>> *\r\n>>\r\n>>\r\n>> *\r\n>> Em 05/04/2017 17:03, Florencia Ramos Conceição escreveu:\r\n>>\r\n>>\r\n>> Esta seguindo os dois\r\n>>\r\n>>\r\n>> -- \r\n>> *Florencia Ramos Conceição*\r\n>> * Pendencia Fiscal*\r\n>>\r\n>> *Fone:(12)1111-6333*\r\n>> *Email:xyz.pendencias1@EmpresaX.com.br*\r\n>> *Acesse nosso site:www.EmpresaX.com.br\r\n>> *\r\n>>\r\n>> *----- Original Message ----*\r\n>> *From:* XYZ.pendencia04@EmpresaX.com.br\r\n>> *To:* \"Florencia Ramos Conceição\"\r\n>> (xyz.pendencias1@EmpresaX.com.br), \"Fulano\"\r\n>> (mary.anne@EmpresaX.com.br)\r\n>> *Date:* Wed, 5 Apr 2017 16:58:34 -0300\r\n>> *Subject:* Re: BLA BLÁ BLA XYZ/ XYZ / TROCA DE PACOTES origem ABC Destino \r\n>>\r\n>> Ok, lembrando que trata-se de dois volume de XYZ.\r\n>>\r\n>> Obrigada.\r\n>>\r\n>>\r\n>>\r\n>>\r\n>>\r\n>> Em 5/4/2017 16:53, Florencia Ramos Conceição escreveu:\r\n>>\r\n>> Volume pertencido a filial XYZ esta seguindo\r\n>> atraves de RRI-0031800000\r\n>>\r\n>>\r\n>> -- \r\n>> *Florencia Ramos Conceição*\r\n>> * Pendencia Fiscal*\r\n>>\r\n>> *Fone:(12)1111-6333*\r\n>> *Email:xyz.pendencias1@EmpresaX.com.br*\r\n>> *Acesse nosso site:www.EmpresaX.com.br\r\n>> *\r\n>>\r\n>> *----- Original Message ----*\r\n>> *From:* XYZ.pendencia04@EmpresaX.com.br\r\n>> *To:* \"Fulano\" (mary.anne@EmpresaX.com.br),\r\n>> \"Florencia Ramos Conceição\"\r\n>> (xyz.pendencias1@EmpresaX.com.br)\r\n>> *Date:* Wed, 5 Apr 2017 09:15:54 -0300\r\n>> *Subject:* BLA BLÁ BLA XYZ/ XYZ / TROCA DE PACOTES origem ABC Destino \r\n>>\r\n>> Bom dia !\r\n>>\r\n>> Fulano,\r\n>>\r\n>>\r\n>> Essa destroca esta difícil de ser resolvida, pois\r\n>> os volumes que se encontravam em XYZ , foi\r\n>> enviado , e até o momento não foi nos enviado os\r\n>> nossos corretos . O cliente XYZ nos cobra\r\n>> posicionamento , e se que tenho retorno da filial\r\n>> XYZ.\r\n>>\r\n>> Favor resolver esse caso , o quanto antes.\r\n>>\r\n>>\r\n>>\r\n>> Em 5/4/2017 08:48, Fulano escreveu:\r\n>>\r\n>> Bom dial,\r\n>>\r\n>> Pessoal informaçoes referente a\r\n>> destroca??...pXYZiso de um retorno*URGENTE,\r\n>> *pois o fornecedor( nossoMONITORADO) tem nos\r\n>> cobra regularmente este posicionamento.\r\n>>\r\n>> Fico no aguardo, para que possamos\r\n>> comunica-lo o mais breve possival\r\n>>\r\n>> att,\r\n>>\r\n>> *Reinaldo Coelho *\r\n>> *Meu cargo atual*\r\n>>\r\n>> *Fone:(11) 2222-4444 / Ramal: 123 **\r\n>> *Email:mary.anne@EmpresaX.com.br*\r\n>> *Acesse nosso site:www.EmpresaX.com.br*\r\n>>\r\n>>\r\n>> *\r\n>> Em 03/04/2017 09:48, Fulano escreveu:\r\n>>\r\n>> Bom dia,\r\n>>\r\n>> Ciclano assim que possível posicionar,\r\n>> peço também que verifique a XYZusa do\r\n>> cliente sobre 3 volumes, pois o erro era\r\n>> apenas em 2 volumes, sendo estes para a\r\n>> filial de XYZ...\r\n>>\r\n>> *Reinaldo Coelho *\r\n>> *Meu cargo atual*\r\n>>\r\n>> *Fone:(11) 2222-4444 / Ramal: 123 **\r\n>> *Email:mary.anne@EmpresaX.com.br*\r\n>> *Acesse nosso site:www.EmpresaX.com.br*\r\n>>\r\n>>\r\n>> *\r\n>> Em 03/04/2017 09:44, Gabriela Xavier escreveu:\r\n>>\r\n>> Bom dia !\r\n>>\r\n>> Temos algum posicionamento ?\r\n>>\r\n>> Nosso cliente nos cobra RETORNO COM\r\n>> URGÊNCIA...\r\n>>\r\n>>\r\n>> Em 31/3/2017 09:35, Fulano escreveu:\r\n>>\r\n>> Bom dia,\r\n>>\r\n>> Ok, agradeço a atenção.\r\n>>\r\n>> *Reinaldo Coelho *\r\n>> *Meu cargo atual*\r\n>>\r\n>> *Fone:(11) 2222-4444 / Ramal: 123 **\r\n>> *Email:mary.anne@EmpresaX.com.br*\r\n>>\r\n>> *Acesse nosso\r\n>> site:www.EmpresaX.com.br*\r\n>>\r\n>>\r\n>> *\r\n>> Em 31/03/2017 09:25, Ciclano\r\n>> Ramos Conceição escreveu:\r\n>>\r\n>> Valéria Bom Dia\r\n>>\r\n>> Trata-se de rota do interior,\r\n>> no qual já foi XYZusado os 03\r\n>> volumes pelo cliente, e\r\n>> parceiro já esta retornando\r\n>> com mercadoria para\r\n>> transportadora para estarmos\r\n>> verificando, assim que tiver\r\n>> ok, informo ID de envio para\r\n>> acompanhamento,\r\n>>\r\n>> Duvidas a disposição.\r\n>>\r\n>>\r\n>> -- \r\n>> *Florencia Ramos Conceição*\r\n>> * Pendencia Fiscal*\r\n>>\r\n>> *Fone:(12)1111-6333*\r\n>> *Email:xyz.pendencias1@EmpresaX.com.br*\r\n>>\r\n>> *Acesse nosso\r\n>> site:www.EmpresaX.com.br*\r\n>> & amp; lt; /p>\r\n>>\r\n>> *----- Original Message ----*\r\n>> *From:*\r\n>> XYZ.pendencia04@EmpresaX.com.br\r\n>> *To:* \"Fulano\"\r\n>> (mary.anne@EmpresaX.com.br),\r\n>> \"Roque Neto\"\r\n>> (xyz.pendencias1@EmpresaX.com.br)\r\n>> *Date:* Fri, 31 Mar 2017\r\n>> 08:56:52 -0300\r\n>> *Subject:* BLA BLÁ BLA XYZ/ \r\n>>\t\t\t\t\t\t\t\t\t\t\tXYZ / TROCA DE PACOTES origem \r\n>>\t\t\t\t\t\t\t\t\t\t\tABC Destino \r\n>>\r\n>> Bom dia !\r\n>>\r\n>> Ciclano,\r\n>>\r\n>>\r\n>> Favor nos posicionar\r\n>> referente ao volume de\r\n>> XYZ , pois o mesmo nos\r\n>> cobra retorno COM URGÊNCIA.\r\n>>\r\n>>\r\n>>\r\n>> Em 30/3/2017 08:24, Fulano\r\n>> escreveu:\r\n>>\r\n>> Bom dia,\r\n>>\r\n>> Gabriela, agradeço o\r\n>> retorno.\r\n>>\r\n>> Ciclano, assim que\r\n>> possível nos\r\n>> posicionar frente ao\r\n>> envio do volume de XYZ.\r\n>>\r\n>> Obrigada.\r\n>>\r\n>> att,\r\n>>\r\n>> *Reinaldo Coelho *\r\n>> *Meu cargo atual*\r\n>>\r\n>> *Fone:(18) 2103-4777\r\n>> / Ramal: 725 **\r\n>> *Email:mary.anne@EmpresaX.com.br*\r\n>>\r\n>> *Acesse nosso\r\n>> site:www.EmpresaX.com.br*\r\n>>\r\n>>\r\n>> *\r\n>> Em 29/03/2017 10:35,\r\n>> Gabriela Xavier escreveu:\r\n>>\r\n>> Bom dia !\r\n>>\r\n>> Troca confirmada\r\n>> , os volumes de\r\n>> XYZ serão\r\n>> enviados hoje\r\n>> através dos RRIs\r\n>> 35468888 /\r\n>> 31755555 , devido\r\n>> a fiscalização.\r\n>>\r\n>> Gentileza\r\n>> acompanhar\r\n>> desembarque dos\r\n>> mesmos, e nos\r\n>> enviar os nossos\r\n>> com urgência...\r\n>>\r\n>>\r\n>>\r\n>>\r\n>> Bueno ,\r\n>>\r\n>> Favor associar a\r\n>> devida viagem em\r\n>> sistema do SSAAS\r\n>> abaixo , hoje.\r\n>>\r\n>>\r\n>>\r\n>>\r\n>>\r\n>>\r\n>>\r\n>>\r\n>>\r\n>> -- \r\n>>\r\n>> Em 29/3/2017\r\n>> 08:21, Fulano\r\n>> escreveu:\r\n>>\r\n>> Bom dia,\r\n>>\r\n>> Ok, por\r\n>> gentileza,\r\n>> assim que\r\n>> tiver\r\n>> informaçoes\r\n>> referente a\r\n>> este volume\r\n>> comunique por\r\n>> favor, para\r\n>> que a\r\n>> destroca seja\r\n>> efetuada o\r\n>> mais breve\r\n>> possivel.\r\n>>\r\n>> *Reinaldo Coelho *\r\n>> *Auxiliar\r\n>> Manutenção*\r\n>>\r\n>> *Fone:(18)\r\n>> 2103-4777 /\r\n>> Ramal: 725 **\r\n>> *Email:mary.anne@EmpresaX.com.br*\r\n>>\r\n>> *Acesse nosso\r\n>> site:www.EmpresaX.com.br*\r\n>>\r\n>>\r\n>> *\r\n>> Em 28/03/2017\r\n>> 17:50,\r\n>> Ciclano Ramos\r\n>> Conceição\r\n>> escreveu:\r\n>>\r\n>> ok\r\n>>\r\n>> já\r\n>> estamos\r\n>> verificando.\r\n>>\r\n>>\r\n>> -- \r\n>> *Ciclano\r\n>> Ramos\r\n>> Conceição*\r\n>> * Pendencia\r\n>> Fiscal*\r\n>>\r\n>> *Fone:(12)1111-6333*\r\n>>\r\n>> *Email:xyz.pendencias1@EmpresaX.com.br*\r\n>>\r\n>> *Acesse\r\n>> nosso\r\n>> site:www.EmpresaX.com.br*\r\n>> & amp;\r\n>> amp; lt; /p>\r\n>>\r\n>> *-----\r\n>> Original\r\n>> Message ----*\r\n>> *From:*\r\n>> mary.anne@EmpresaX.com.br\r\n>> *To:*\r\n>> \"Roque\r\n>> Neto\"\r\n>> (xyz.pendencias1@EmpresaX.com.br),\r\n>> \"Gabriela\r\n>> Xavier\"\r\n>> (XYZ.pendencia04@EmpresaX.com.br)\r\n>> *Cc:*\r\n>> \"Logística\r\n>> | Grupo\r\n>> Xamego\"\r\n>> (logistica@Xamego.com.br)\r\n>> *Date:*\r\n>> Tue, 28\r\n>> Mar 2017\r\n>> 17:36:24\r\n>> -0300\r\n>> *Subject:*\r\n>>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tBLA BLÁ BLA XYZ/ XYZ / \r\n>>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTROCA DE PACOTES origem ABC Destino \r\n>>\r\n>> Boa\r\n>> tarde\r\n>> colegas,\r\n>>\r\n>> Os\r\n>> conhecimentos\r\n>> citados\r\n>> constam\r\n>> em\r\n>> entrega,\r\n>> porem\r\n>> houve\r\n>> troca\r\n>> de\r\n>> etiquetagem\r\n>> em\r\n>> XYZ,\r\n>> desta\r\n>> forma,\r\n>> peço\r\n>> a\r\n>> atenção\r\n>> para\r\n>> que\r\n>> possamos\r\n>> destrocar\r\n>> o\r\n>> mais\r\n>> breve\r\n>> possível\r\n>>\r\n>> XYZ\r\n>> 322433,\r\n>> CLIENTE\r\n>> ME DE\r\n>> S\r\n>> CASTRO\r\n>> (XYZ), \r\n>> trocado\r\n>> com o\r\n>> AWB\r\n>> 383555,\r\n>> CLIENTE\r\n>> XE\r\n>> MENTES(XYZ)\r\n>>\r\n>> (O\r\n>> cliente\r\n>> XE\r\n>> MENTES,\r\n>> conforme\r\n>> informaçoes,\r\n>> devolveu\r\n>> a\r\n>> mercadoria\r\n>> no\r\n>> ato\r\n>> da\r\n>> entrega)\r\n>>\r\n>> *Gabriela*\r\n>> por\r\n>> gentileza,\r\n>> verificar\r\n>> informação\r\n>> de\r\n>> devolução\r\n>> para\r\n>> que\r\n>> se\r\n>> possa\r\n>> enviar\r\n>> o\r\n>> volume\r\n>> para\r\n>> XYZ,\r\n>> por\r\n>> gentileza.\r\n>>\r\n>> *Anislei,*\r\n>> não\r\n>> temos\r\n>> informaçoes\r\n>> de\r\n>> que o\r\n>> cliente\r\n>> de\r\n>> XYZ,\r\n>> ja\r\n>> verificou\r\n>> o\r\n>> erro,\r\n>> desta\r\n>> forma,\r\n>> peço,\r\n>> entrar\r\n>> em\r\n>> contato\r\n>> com a\r\n>> tripulação\r\n>> para\r\n>> que a\r\n>> entrega\r\n>> não\r\n>> seja\r\n>> finalizada,\r\n>> e\r\n>> encaminhar\r\n>> o\r\n>> volume\r\n>> para XYZ\r\n>>\r\n>> Fico\r\n>> no\r\n>> aguardo,\r\n>> pois\r\n>> trata-se\r\n>> de um\r\n>> cliente\r\n>> monitorado\r\n>>\r\n>> *Valéria\r\n>> Coelho *\r\n>> *Auxiliar\r\n>> Manutenção*\r\n>>\r\n>>\r\n>> *Fone:(11)\r\n>> 2100-4777\r\n>> /\r\n>\r\n\r\n", result); Assert.IsTrue(string.IsNullOrWhiteSpace(message.BodyHtml.Text)); } } diff --git a/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit-utf8-flowed.eml b/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit-utf8-flowed.eml new file mode 100644 index 0000000..5e6f746 --- /dev/null +++ b/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit-utf8-flowed.eml @@ -0,0 +1,590 @@ +Subject: Re: BLA BLÁ BLA XYZ/ XYZ / TROCA DE PACOTES origem ABC Destino XYZ x XYZ + Nfs 666666 / 777777 Fornecedor Xamego INDUSTRIA +To: Fer/ Xamego +References: <14919984602065176398@webmail.manodoc.com.br> +From: Fulano +Message-ID: +Date: Wed, 12 Apr 2017 15:32:00 -0300 +User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 + Thunderbird/45.7.1 +MIME-Version: 1.0 +In-Reply-To: +Content-Type: multipart/alternative; + boundary="------------6E748F47A8B6FDF617BBE981" + +This is a multi-part message in MIME format. +--------------6E748F47A8B6FDF617BBE981 +Content-Type: text/plain; charset=utf-8; format=flowed +Content-Transfer-Encoding: 8bit + +Boa tarde, + +*Fulano*, conforme o conversado em nosso teste, os dados do erro ja +foram coletados, estamos trabalhando com a máxima urgência afim de +efetuarmos a identificação. + +_Em contato com o cliente estou tentando reproduzir o problema +nesta mensagem._ + +_*Ciclano*( Empresa B ), por gentileza, conforme ja conversado, peço, +priorizar acompanhar a estrutura errada deste e-mail._ + + +Certa da atenção, agradeço + + +*Reinaldo Coelho * +Nosso Grupo + +* +Em 12/04/2017 09:10, Fulano escreveu: +> +> Ok, Agradeço a atenção Ciclano. +> +> *Reinaldo Coelho * +> *Meu cargo atual* +> EmpresaX +> *Fone:(11) 2222-4444 / Ramal: 123 ** +> *Email:mary.anne@EmpresaX.com.br +> * +> *Acesse nosso site:www.EmpresaX.com.br * +> Nosso Grupo +> +> * +> Em 12/04/2017 09:01, Florencia Ramos Conceição escreveu: +>> +>> +>> +>> Sim volumes pertencido a XYZ já desembarcarão e segue hoje para +>> araguaina-to +>> +>> Duvidas a disposição. +>> +>> +>> -- +>> *Florencia Ramos Conceição* +>> * Pendencia Fiscal* +>> +>> *Fone:(12)1111-6333* +>> *Email:xyz.pendencias1@EmpresaX.com.br* +>> *Acesse nosso site:www.EmpresaX.com.br * +>> +>> *----- Original Message ----* +>> *From:* mary.anne@EmpresaX.com.br +>> *To:* "Florencia Ramos Conceição" (xyz.pendencias1@EmpresaX.com.br) +>> *Cc:* "Carlão Steave" (vendasnonorte@prego.com.br) +>> *Date:* Tue, 11 Apr 2017 15:11:37 -0300 +>> *Subject:* Re: BLA BLÁ BLA XYZ/ XYZ / TROCA DE PACOTES origem ABC Destino +>> +>> Boa tarde, +>> +>> tentei contato telefônico, porem não foi possível; o cliente que +>> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +>> yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +>> informar se o volume do mesmo ja consta em XYZ??? +>> +>> Fico no aguardo para informarmos ao cliente. +>> +>> Agradeço +>> +>> att, +>> +>> *Reinaldo Coelho * +>> *Meu cargo atual* +>> +>> *Fone:(11) 2222-4444 / Ramal: 123 ** +>> *Email:mary.anne@EmpresaX.com.br +>> * +>> *Acesse nosso site:www.EmpresaX.com.br +>> * +>> +>> +>> * +>> Em 05/04/2017 17:03, Florencia Ramos Conceição escreveu: +>> +>> +>> Esta seguindo os dois +>> +>> +>> -- +>> *Florencia Ramos Conceição* +>> * Pendencia Fiscal* +>> +>> *Fone:(12)1111-6333* +>> *Email:xyz.pendencias1@EmpresaX.com.br* +>> *Acesse nosso site:www.EmpresaX.com.br +>> * +>> +>> *----- Original Message ----* +>> *From:* XYZ.pendencia04@EmpresaX.com.br +>> *To:* "Florencia Ramos Conceição" +>> (xyz.pendencias1@EmpresaX.com.br), "Fulano" +>> (mary.anne@EmpresaX.com.br) +>> *Date:* Wed, 5 Apr 2017 16:58:34 -0300 +>> *Subject:* Re: BLA BLÁ BLA XYZ/ XYZ / TROCA DE PACOTES origem ABC Destino +>> +>> Ok, lembrando que trata-se de dois volume de XYZ. +>> +>> Obrigada. +>> +>> +>> +>> +>> +>> Em 5/4/2017 16:53, Florencia Ramos Conceição escreveu: +>> +>> Volume pertencido a filial XYZ esta seguindo +>> atraves de RRI-0031800000 +>> +>> +>> -- +>> *Florencia Ramos Conceição* +>> * Pendencia Fiscal* +>> +>> *Fone:(12)1111-6333* +>> *Email:xyz.pendencias1@EmpresaX.com.br* +>> *Acesse nosso site:www.EmpresaX.com.br +>> * +>> +>> *----- Original Message ----* +>> *From:* XYZ.pendencia04@EmpresaX.com.br +>> *To:* "Fulano" (mary.anne@EmpresaX.com.br), +>> "Florencia Ramos Conceição" +>> (xyz.pendencias1@EmpresaX.com.br) +>> *Date:* Wed, 5 Apr 2017 09:15:54 -0300 +>> *Subject:* BLA BLÁ BLA XYZ/ XYZ / TROCA DE PACOTES origem ABC Destino +>> +>> Bom dia ! +>> +>> Fulano, +>> +>> +>> Essa destroca esta difícil de ser resolvida, pois +>> os volumes que se encontravam em XYZ , foi +>> enviado , e até o momento não foi nos enviado os +>> nossos corretos . O cliente XYZ nos cobra +>> posicionamento , e se que tenho retorno da filial +>> XYZ. +>> +>> Favor resolver esse caso , o quanto antes. +>> +>> +>> +>> Em 5/4/2017 08:48, Fulano escreveu: +>> +>> Bom dial, +>> +>> Pessoal informaçoes referente a +>> destroca??...pXYZiso de um retorno*URGENTE, +>> *pois o fornecedor( nossoMONITORADO) tem nos +>> cobra regularmente este posicionamento. +>> +>> Fico no aguardo, para que possamos +>> comunica-lo o mais breve possival +>> +>> att, +>> +>> *Reinaldo Coelho * +>> *Meu cargo atual* +>> +>> *Fone:(11) 2222-4444 / Ramal: 123 ** +>> *Email:mary.anne@EmpresaX.com.br* +>> *Acesse nosso site:www.EmpresaX.com.br* +>> +>> +>> * +>> Em 03/04/2017 09:48, Fulano escreveu: +>> +>> Bom dia, +>> +>> Ciclano assim que possível posicionar, +>> peço também que verifique a XYZusa do +>> cliente sobre 3 volumes, pois o erro era +>> apenas em 2 volumes, sendo estes para a +>> filial de XYZ... +>> +>> *Reinaldo Coelho * +>> *Meu cargo atual* +>> +>> *Fone:(11) 2222-4444 / Ramal: 123 ** +>> *Email:mary.anne@EmpresaX.com.br* +>> *Acesse nosso site:www.EmpresaX.com.br* +>> +>> +>> * +>> Em 03/04/2017 09:44, Gabriela Xavier escreveu: +>> +>> Bom dia ! +>> +>> Temos algum posicionamento ? +>> +>> Nosso cliente nos cobra RETORNO COM +>> URGÊNCIA... +>> +>> +>> Em 31/3/2017 09:35, Fulano escreveu: +>> +>> Bom dia, +>> +>> Ok, agradeço a atenção. +>> +>> *Reinaldo Coelho * +>> *Meu cargo atual* +>> +>> *Fone:(11) 2222-4444 / Ramal: 123 ** +>> *Email:mary.anne@EmpresaX.com.br* +>> +>> *Acesse nosso +>> site:www.EmpresaX.com.br* +>> +>> +>> * +>> Em 31/03/2017 09:25, Ciclano +>> Ramos Conceição escreveu: +>> +>> Valéria Bom Dia +>> +>> Trata-se de rota do interior, +>> no qual já foi XYZusado os 03 +>> volumes pelo cliente, e +>> parceiro já esta retornando +>> com mercadoria para +>> transportadora para estarmos +>> verificando, assim que tiver +>> ok, informo ID de envio para +>> acompanhamento, +>> +>> Duvidas a disposição. +>> +>> +>> -- +>> *Florencia Ramos Conceição* +>> * Pendencia Fiscal* +>> +>> *Fone:(12)1111-6333* +>> *Email:xyz.pendencias1@EmpresaX.com.br* +>> +>> *Acesse nosso +>> site:www.EmpresaX.com.br* +>> & amp; lt; /p> +>> +>> *----- Original Message ----* +>> *From:* +>> XYZ.pendencia04@EmpresaX.com.br +>> *To:* "Fulano" +>> (mary.anne@EmpresaX.com.br), +>> "Roque Neto" +>> (xyz.pendencias1@EmpresaX.com.br) +>> *Date:* Fri, 31 Mar 2017 +>> 08:56:52 -0300 +>> *Subject:* BLA BLÁ BLA XYZ/ +>> XYZ / TROCA DE PACOTES origem +>> ABC Destino +>> +>> Bom dia ! +>> +>> Ciclano, +>> +>> +>> Favor nos posicionar +>> referente ao volume de +>> XYZ , pois o mesmo nos +>> cobra retorno COM URGÊNCIA. +>> +>> +>> +>> Em 30/3/2017 08:24, Fulano +>> escreveu: +>> +>> Bom dia, +>> +>> Gabriela, agradeço o +>> retorno. +>> +>> Ciclano, assim que +>> possível nos +>> posicionar frente ao +>> envio do volume de XYZ. +>> +>> Obrigada. +>> +>> att, +>> +>> *Reinaldo Coelho * +>> *Meu cargo atual* +>> +>> *Fone:(18) 2103-4777 +>> / Ramal: 725 ** +>> *Email:mary.anne@EmpresaX.com.br* +>> +>> *Acesse nosso +>> site:www.EmpresaX.com.br* +>> +>> +>> * +>> Em 29/03/2017 10:35, +>> Gabriela Xavier escreveu: +>> +>> Bom dia ! +>> +>> Troca confirmada +>> , os volumes de +>> XYZ serão +>> enviados hoje +>> através dos RRIs +>> 35468888 / +>> 31755555 , devido +>> a fiscalização. +>> +>> Gentileza +>> acompanhar +>> desembarque dos +>> mesmos, e nos +>> enviar os nossos +>> com urgência... +>> +>> +>> +>> +>> Bueno , +>> +>> Favor associar a +>> devida viagem em +>> sistema do SSAAS +>> abaixo , hoje. +>> +>> +>> +>> +>> +>> +>> +>> +>> +>> -- +>> +>> Em 29/3/2017 +>> 08:21, Fulano +>> escreveu: +>> +>> Bom dia, +>> +>> Ok, por +>> gentileza, +>> assim que +>> tiver +>> informaçoes +>> referente a +>> este volume +>> comunique por +>> favor, para +>> que a +>> destroca seja +>> efetuada o +>> mais breve +>> possivel. +>> +>> *Reinaldo Coelho * +>> *Auxiliar +>> Manutenção* +>> +>> *Fone:(18) +>> 2103-4777 / +>> Ramal: 725 ** +>> *Email:mary.anne@EmpresaX.com.br* +>> +>> *Acesse nosso +>> site:www.EmpresaX.com.br* +>> +>> +>> * +>> Em 28/03/2017 +>> 17:50, +>> Ciclano Ramos +>> Conceição +>> escreveu: +>> +>> ok +>> +>> já +>> estamos +>> verificando. +>> +>> +>> -- +>> *Ciclano +>> Ramos +>> Conceição* +>> * Pendencia +>> Fiscal* +>> +>> *Fone:(12)1111-6333* +>> +>> *Email:xyz.pendencias1@EmpresaX.com.br* +>> +>> *Acesse +>> nosso +>> site:www.EmpresaX.com.br* +>> & amp; +>> amp; lt; /p> +>> +>> *----- +>> Original +>> Message ----* +>> *From:* +>> mary.anne@EmpresaX.com.br +>> *To:* +>> "Roque +>> Neto" +>> (xyz.pendencias1@EmpresaX.com.br), +>> "Gabriela +>> Xavier" +>> (XYZ.pendencia04@EmpresaX.com.br) +>> *Cc:* +>> "Logística +>> | Grupo +>> Xamego" +>> (logistica@Xamego.com.br) +>> *Date:* +>> Tue, 28 +>> Mar 2017 +>> 17:36:24 +>> -0300 +>> *Subject:* +>> BLA BLÁ BLA XYZ/ XYZ / +>> TROCA DE PACOTES origem ABC Destino +>> +>> Boa +>> tarde +>> colegas, +>> +>> Os +>> conhecimentos +>> citados +>> constam +>> em +>> entrega, +>> porem +>> houve +>> troca +>> de +>> etiquetagem +>> em +>> XYZ, +>> desta +>> forma, +>> peço +>> a +>> atenção +>> para +>> que +>> possamos +>> destrocar +>> o +>> mais +>> breve +>> possível +>> +>> XYZ +>> 322433, +>> CLIENTE +>> ME DE +>> S +>> CASTRO +>> (XYZ), +>> trocado +>> com o +>> AWB +>> 383555, +>> CLIENTE +>> XE +>> MENTES(XYZ) +>> +>> (O +>> cliente +>> XE +>> MENTES, +>> conforme +>> informaçoes, +>> devolveu +>> a +>> mercadoria +>> no +>> ato +>> da +>> entrega) +>> +>> *Gabriela* +>> por +>> gentileza, +>> verificar +>> informação +>> de +>> devolução +>> para +>> que +>> se +>> possa +>> enviar +>> o +>> volume +>> para +>> XYZ, +>> por +>> gentileza. +>> +>> *Anislei,* +>> não +>> temos +>> informaçoes +>> de +>> que o +>> cliente +>> de +>> XYZ, +>> ja +>> verificou +>> o +>> erro, +>> desta +>> forma, +>> peço, +>> entrar +>> em +>> contato +>> com a +>> tripulação +>> para +>> que a +>> entrega +>> não +>> seja +>> finalizada, +>> e +>> encaminhar +>> o +>> volume +>> para XYZ +>> +>> Fico +>> no +>> aguardo, +>> pois +>> trata-se +>> de um +>> cliente +>> monitorado +>> +>> *Valéria +>> Coelho * +>> *Auxiliar +>> Manutenção* +>> +>> +>> *Fone:(11) +>> 2100-4777 +>> / +> + + +--------------6E748F47A8B6FDF617BBE981-- \ No newline at end of file diff --git a/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit.eml b/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit.eml index 50f751b..1131c41 100644 --- a/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit.eml +++ b/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit.eml @@ -57,4 +57,4 @@ Subject: Special char test çãõáéíóú Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit -Assunto Special char test çãõáéíóú \ No newline at end of file +Body special char test çãõáéíóú \ No newline at end of file