diff --git a/.gitignore b/.gitignore index 5863248..fa97a93 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ ipch/ *.psess *.vsp *.vspx +.vs # Guidance Automation Toolkit *.gpState diff --git a/.vs/ActiveUp.Net-vs2017/v15/sqlite3/storage.ide b/.vs/ActiveUp.Net-vs2017/v15/sqlite3/storage.ide deleted file mode 100644 index 2399e81..0000000 Binary files a/.vs/ActiveUp.Net-vs2017/v15/sqlite3/storage.ide and /dev/null differ diff --git a/Class Library/ActiveUp.Net.Common/Message.cs b/Class Library/ActiveUp.Net.Common/Message.cs index b5a1921..75662fe 100644 --- a/Class Library/ActiveUp.Net.Common/Message.cs +++ b/Class Library/ActiveUp.Net.Common/Message.cs @@ -542,7 +542,7 @@ public MimePart ToMimePart() /// public string ToMimeString() { - return ToMimeString(false); + return ToMimeString(true); } /// diff --git a/Class Library/ActiveUp.Net.Common/Parser.cs b/Class Library/ActiveUp.Net.Common/Parser.cs index 3d733c3..4d8b006 100644 --- a/Class Library/ActiveUp.Net.Common/Parser.cs +++ b/Class Library/ActiveUp.Net.Common/Parser.cs @@ -34,7 +34,7 @@ namespace ActiveUp.Net.Mail #endif public static class Parser { - private static Encoding defaultEncoding = Encoding.GetEncoding("iso-8859-1"); + private static Encoding defaultEncoding = Encoding.UTF8; #region Methods @@ -179,7 +179,7 @@ private static void ParseSubParts(ref MimePart part, Message message) GC.WaitForPendingFinalizers(); parentPartBinary = tmp; - parentPartUtf8Body = ToUtf8(parentPartBinary); + parentPartUtf8Body = defaultEncoding.GetString(parentPartBinary); tmp = null; if (!strpart.StartsWith("--") && !string.IsNullOrEmpty(strpart)) @@ -297,6 +297,8 @@ private static void DispatchPart(MimePart part, ref Message message) #endif } + // If is an empty content, return without add part. + if (part.BinaryContent.Length == 0 && part?.ContentName == null && string.IsNullOrWhiteSpace(part?.Filename)) return; // Anyway, this is a leaf part of the message. message.LeafMimeParts.Add(part); } diff --git a/Class Library/ActiveUp.Net.Common/SslHandShake.cs b/Class Library/ActiveUp.Net.Common/SslHandShake.cs index 16a04a2..ef96dcf 100644 --- a/Class Library/ActiveUp.Net.Common/SslHandShake.cs +++ b/Class Library/ActiveUp.Net.Common/SslHandShake.cs @@ -48,7 +48,7 @@ public SslHandShake(string hostName, System.Security.Authentication.SslProtocols { } - public SslHandShake(string hostName) : this(hostName, System.Security.Authentication.SslProtocols.Default, null, null, null, false) + public SslHandShake(string hostName) : this(hostName, System.Security.Authentication.SslProtocols.None, null, null, null, false) { } diff --git a/Class Library/ActiveUp.Net.Imap4/Fetch.cs b/Class Library/ActiveUp.Net.Imap4/Fetch.cs index d987a6a..f29a32b 100644 --- a/Class Library/ActiveUp.Net.Imap4/Fetch.cs +++ b/Class Library/ActiveUp.Net.Imap4/Fetch.cs @@ -5,7 +5,7 @@ // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. -// +// // MailSystem.NET is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -13,7 +13,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with SharpMap; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA using System; using System.IO; @@ -29,8 +29,6 @@ namespace ActiveUp.Net.Mail #endif public class Fetch { - private string _response; - private byte[] _binaryResponse; #region Methods @@ -56,7 +54,7 @@ private CommandOptions getFetchOptions() /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -64,9 +62,9 @@ private CommandOptions getFetchOptions() /// string body = inbox.Fetch.Body(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -74,9 +72,9 @@ private CommandOptions getFetchOptions() /// Dim body As String = inbox.Fetch.Body(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -106,7 +104,7 @@ public string EndBody(IAsyncResult result) { return _delegateBody.EndInvoke(result); } - + public string UidBody(int uid) { ParentMailbox.SourceClient.SelectMailbox(ParentMailbox.Name); @@ -137,7 +135,7 @@ public string EndUidBody(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -145,9 +143,9 @@ public string EndUidBody(IAsyncResult result) /// string body = inbox.Fetch.BodySection(1,3); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -155,9 +153,9 @@ public string EndUidBody(IAsyncResult result) /// Dim body As String = inbox.Fetch.Body(1,3); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -217,7 +215,7 @@ public string EndUidBodySection(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -225,9 +223,9 @@ public string EndUidBodySection(IAsyncResult result) /// string body = inbox.Fetch.BodyStructure(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -235,9 +233,9 @@ public string EndUidBodySection(IAsyncResult result) /// Dim body As String = inbox.Fetch.BodyStructure(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -297,7 +295,7 @@ public string EndUidBodyStructure(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -305,9 +303,9 @@ public string EndUidBodyStructure(IAsyncResult result) /// string internalDate = inbox.Fetch.InternalDate(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -315,9 +313,9 @@ public string EndUidBodyStructure(IAsyncResult result) /// Dim internalDate As String = inbox.Fetch.InternalDate(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -377,7 +375,7 @@ public string EndUidInternalDate(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -385,9 +383,9 @@ public string EndUidInternalDate(IAsyncResult result) /// FlagCollection flags = inbox.Fetch.Flags(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -395,9 +393,9 @@ public string EndUidInternalDate(IAsyncResult result) /// Dim flags As FlagCollection = inbox.Fetch.Flags(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -510,7 +508,7 @@ public byte[] EndUidHeader(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -518,9 +516,9 @@ public byte[] EndUidHeader(IAsyncResult result) /// Header Header = inbox.Fetch.Header(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -528,9 +526,9 @@ public byte[] EndUidHeader(IAsyncResult result) /// Dim Header As Header = inbox.Fetch.Header(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -696,7 +694,7 @@ public string EndUidHeaderString(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -707,9 +705,9 @@ public string EndUidHeaderString(IAsyncResult result) /// string messageSubject = lines["subject"]; /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -720,9 +718,9 @@ public string EndUidHeaderString(IAsyncResult result) /// Dim messageSubject As String = lines("subject") /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -891,7 +889,7 @@ public System.Collections.Specialized.NameValueCollection EndUidHeaderLinesNotPe /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -902,9 +900,9 @@ public System.Collections.Specialized.NameValueCollection EndUidHeaderLinesNotPe /// string messageSubject = lines["subject"]; /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -915,9 +913,9 @@ public System.Collections.Specialized.NameValueCollection EndUidHeaderLinesNotPe /// Dim messageSubject As String = lines("subject") /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -1087,9 +1085,9 @@ public byte[] Message(int messageOrdinal) { ParentMailbox.SourceClient.SelectMailbox(ParentMailbox.Name); ParentMailbox.SourceClient.OnMessageRetrieving(new MessageRetrievingEventArgs(messageOrdinal)); byte[] response = ParentMailbox.SourceClient.CommandBinary("fetch " + messageOrdinal.ToString() + " rfc822", getFetchOptions()); - _binaryResponse = response; - _response = Encoding.UTF8.GetString(response); - Logger.AddEntry(GetType(), _response); + BinaryResponse = response; + Response = Encoding.UTF8.GetString(response); + Logger.AddEntry(GetType(), Response); byte[] message = ExtractMessageFromReponse(response); @@ -1139,7 +1137,7 @@ public byte[] EndUidMessage(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -1147,9 +1145,9 @@ public byte[] EndUidMessage(IAsyncResult result) /// Message message = inbox.Fetch.Message(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -1157,9 +1155,9 @@ public byte[] EndUidMessage(IAsyncResult result) /// Dim message As Message = inbox.Fetch.Message(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -1259,12 +1257,12 @@ public MemoryStream EndUidMessageStream(IAsyncResult result) /// The ordinal position of the message to be fetched. /// The message's data as a string. /// - public string MessageString(int messageOrdinal) + public string MessageString(int messageOrdinal) { return Encoding.UTF8.GetString(Message(messageOrdinal)); } - private static byte[] ExtractMessageFromReponse(byte[] response) + private static byte[] ExtractMessageFromReponse(byte[] response) { byte[] message = null; string responseString = Encoding.ASCII.GetString(response); @@ -1286,7 +1284,7 @@ private static byte[] ExtractMessageFromReponse(byte[] response) continue; } } - + try { if (message == null || firstline == null) throw new Exception("failed to determine messagesize"); @@ -1300,14 +1298,14 @@ private static byte[] ExtractMessageFromReponse(byte[] response) int suffixLength = Encoding.ASCII.GetByteCount(responseString.Substring(responseString.LastIndexOf(")"))); message = new byte[response.Length - prefixLength - suffixLength]; Array.Copy(response, prefixLength, message, 0, message.Length); - } + } return message; } catch (Exception e) { throw new Exception("failed to extract message from response", e); } } - + private delegate string DelegateMessageString(int messageOrdinal); private DelegateMessageString _delegateMessageString; @@ -1359,12 +1357,12 @@ public byte[] MessagePeek(int messageOrdinal) ParentMailbox.SourceClient.OnMessageRetrieving(new MessageRetrievingEventArgs(messageOrdinal)); byte[] response; if (ParentMailbox.SourceClient.ServerCapabilities.IndexOf("IMAP4rev1") != -1) - response = ParentMailbox.SourceClient.CommandBinary("fetch " + messageOrdinal.ToString() + " body[mime]", getFetchOptions()); + response = ParentMailbox.SourceClient.CommandBinary("fetch " + messageOrdinal.ToString() + " body[mime]", getFetchOptions()); else response = ParentMailbox.SourceClient.CommandBinary("fetch " + messageOrdinal.ToString() + " rfc822.peek", getFetchOptions()); - _binaryResponse = response; - _response = Encoding.UTF8.GetString(response); - + BinaryResponse = response; + Response = Encoding.UTF8.GetString(response); + byte[] message = ExtractMessageFromReponse(response); ParentMailbox.SourceClient.OnMessageRetrieved(new MessageRetrievedEventArgs(message, messageOrdinal)); return message; @@ -1387,7 +1385,19 @@ public byte[] EndMessagePeek(IAsyncResult result) public byte[] UidMessagePeek(int uid) { - return Encoding.UTF8.GetBytes(UidMessageStringPeek(uid)); + ParentMailbox.SourceClient.SelectMailbox(ParentMailbox.Name); + ParentMailbox.SourceClient.OnMessageRetrieving(new MessageRetrievingEventArgs(uid)); + byte[] response; + if (ParentMailbox.SourceClient.ServerCapabilities.IndexOf("IMAP4rev1") != -1) + response = ParentMailbox.SourceClient.CommandBinary("uid fetch " + uid.ToString() + " BODY.PEEK[]", getFetchOptions()); + else + response = ParentMailbox.SourceClient.CommandBinary("uid fetch " + uid.ToString() + " rfc822.peek", getFetchOptions()); + BinaryResponse = response; + Response = Encoding.UTF8.GetString(response); + + byte[] message = ExtractMessageFromReponse(response); + ParentMailbox.SourceClient.OnMessageRetrieved(new MessageRetrievedEventArgs(message, uid)); + return message; } private delegate byte[] DelegateUidMessagePeek(int uid); @@ -1554,7 +1564,7 @@ public string EndUidMessageStringPeek(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -1562,9 +1572,9 @@ public string EndUidMessageStringPeek(IAsyncResult result) /// int size = inbox.Fetch.Size(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -1572,9 +1582,9 @@ public string EndUidMessageStringPeek(IAsyncResult result) /// Dim size As Integer = inbox.Fetch.Size(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -1634,7 +1644,7 @@ public int EndUidSize(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -1642,9 +1652,9 @@ public int EndUidSize(IAsyncResult result) /// string messageBody = inbox.Fetch.Text(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -1652,9 +1662,9 @@ public int EndUidSize(IAsyncResult result) /// Dim messageBody As Header = inbox.Fetch.Text(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -1766,7 +1776,7 @@ public string EndUidTextPeek(IAsyncResult result) /// /// /// C# - /// + /// /// Imap4Client imap = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -1774,9 +1784,9 @@ public string EndUidTextPeek(IAsyncResult result) /// int uid = inbox.Fetch.Uid(1); /// inbox.Close(); /// imap.Disconnect(); - /// + /// /// VB.NET - /// + /// /// Dim imap As New Imap4Client /// imap.Connect("mail.myhost.com") /// imap.Login("jdoe1234","tanstaaf") @@ -1784,9 +1794,9 @@ public string EndUidTextPeek(IAsyncResult result) /// Dim uid As Integer = inbox.Fetch.Uid(1); /// inbox.Close() /// imap.Disconnect() - /// + /// /// JScript.NET - /// + /// /// var imap:Imap4Client = new Imap4Client(); /// imap.Connect("mail.myhost.com"); /// imap.Login("jdoe1234","tanstaaf"); @@ -2159,22 +2169,18 @@ public string EndPartialTextStringPeek(IAsyncResult result) /// /// The complete mail server response /// - public string Response { - get { return _response; } - } + public string Response { get; private set; } /// /// The complete mail server response (binary) /// - public byte[] BinaryResponse { - get { return _binaryResponse; } - } + public byte[] BinaryResponse { get; private set; } /// /// The Fetch's parent mailbox. /// public Mailbox ParentMailbox { get; set; } - + #endregion } } \ No newline at end of file diff --git a/Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj b/Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj index 1492410..44a5b97 100644 --- a/Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj +++ b/Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj @@ -112,6 +112,12 @@ Always + + Always + + + Always + Always diff --git a/Class Library/ActiveUp.Net.Tests/Common/ParserTests.cs b/Class Library/ActiveUp.Net.Tests/Common/ParserTests.cs index 794a909..bea6d91 100644 --- a/Class Library/ActiveUp.Net.Tests/Common/ParserTests.cs +++ b/Class Library/ActiveUp.Net.Tests/Common/ParserTests.cs @@ -157,7 +157,7 @@ public void should_decode_japanese_content() public void should_recognize_line_break_of_notepad_text_in_body() { var message = Parser.ParseMessageFromFile(_baseDir + "\\resource\\quoted-printable-notepad-linebreak.eml"); - message.BodyText.Text.ShouldEqual("Alatur,\r\rFoi criada uma nova solicitação para TESTE SOLICITANTE.\r\rCliente: TESTE HOTEL\rEmpresa: TESTE\rC. Custo: TESTE TESTE\r\r\r>>> PASSAGEM AÉREA\rDescrição.: (GRU) Cumbica / (LAS) Las Vegas 04/Jan Manhã (06:00 às 12:00) (Econômica)\rHorário...: considerando saída\rPagamento.: FATURADO\r\rDescrição.: (LAS) Las Vegas / (GRU) Cumbica 07/Jan Manhã (06:00 às 12:00) (Econômica)\rHorário...: considerando saída\rPagamento.: FATURADO\r\r\r>>> SOLICITANTE\rteste solicitante (fulfillment@alatur.com)\r\r\rDestinatários que estão recebendo esse email: \rtms@argoit.com.br (tms@argoit.com.br)\rteste solicitante (fulfillment@alatur.com)\rtesteodare@encontact.com.br (testeodare@encontact.com.br)\rodare@encontact.com.br (odare@encontact.com.br)\r\rPara acessá-la clique em: \r \r\rEMAIL AUTOMÁTICO, NÃO RESPONDA ESSA MENSAGEM\r\n"); + message.BodyText.Text.ShouldEqual("Sender,\r\rFoi criada uma nova solicitação para TESTE SOLICITANTE.\r\rCliente: TESTE HOTEL\rEmpresa: TESTE\rC. Custo: TESTE TESTE\r\r\r>>> PASSAGEM AÉREA\rDescrição.: (GRU) Cumbica / (LAS) Las Vegas 04/Jan Manhã (06:00 às 12:00) (Econômica)\rHorário...: considerando saída\rPagamento.: FATURADO\r\rDescrição.: (LAS) Las Vegas / (GRU) Cumbica 07/Jan Manhã (06:00 às 12:00) (Econômica)\rHorário...: considerando saída\rPagamento.: FATURADO\r\r\r>>> SOLICITANTE\rteste solicitante (teste-conta@sender.com)\r\r\rDestinatários que estão recebendo esse email: \rtms@server.com (tms@argoit.com.br)\rteste solicitante (teste-conta@sender.com)\rtestereceiver@enterprise.com (testreceiver@enterprise.com)\rtestreceiver@enterprise.co (testreceiver@enterprise.com)\r\rPara acessá-la clique em: \r \r\rEMAIL AUTOMÁTICO, NÃO RESPONDA ESSA MENSAGEM\r\n"); message.BodyHtml.Text.ShouldEqual(""); } @@ -250,10 +250,40 @@ public void MustParseEmlWithContentTransferEncode8BitUtf8FlowedHistory() public void MustParseEmlContainingOnlyHeaders() { var message = Parser.ParseMessageFromFile(_baseDir + "\\resource\\only_header.eml"); + Assert.AreEqual("sender@host.com.br", message.From.Email); Assert.AreEqual("59a459219e757_52803fc2847231301918b@a4-winter6.mail", message.MessageId); Assert.AreEqual("I'm put all my text message on subject, then no has body in this e-mail. second line exists too.", message.Subject); Assert.IsTrue(string.IsNullOrWhiteSpace(message.BodyText.Text)); Assert.IsTrue(string.IsNullOrWhiteSpace(message.BodyHtml.Text)); + Assert.AreEqual(0, message.Attachments.Count); + } + + [Test(Description = "")] + public void MustParseEmlContainingOnlyHeaders2() + { + var message = Parser.ParseMessageFromFile(_baseDir + "\\resource\\only_header_2.eml"); + Assert.AreEqual("parceiro@abidos.com.br", message.From.Email); + Assert.AreEqual("d38c1c1f-abdc-483e-b8b5-cb95c65c2eeb@CY1NAM02FT029.eop-nam02.prod.protection.outlook.com", message.MessageId); + Assert.AreEqual("Conclua sua pos em 6 meses!!!", message.Subject); + Assert.IsTrue(string.IsNullOrWhiteSpace(message.BodyText.Text)); + Assert.IsTrue(string.IsNullOrWhiteSpace(message.BodyHtml.Text)); + Assert.AreEqual(0, message.Attachments.Count); + Assert.AreEqual(0, message.LeafMimeParts.Count); + } + + [Test(Description = "")] + public void MustParse8BitEmlWithSpecialCharInHtmlBody() + { + var message = Parser.ParseMessageFromFile(_baseDir + "\\resource\\content-transfer-encode-8bit-html-special-char.eml"); + Assert.AreEqual("fromemail@domain.com", message.From.Email); + Assert.AreEqual("3a8c760555b716f3834fef3a2b05f160@deskserver.ms", message.MessageId); + Assert.AreEqual("CLIENT - BRASIL Status: OPEN / RESOLVED #0917-000622", message.Subject); + Assert.IsFalse(string.IsNullOrWhiteSpace(message.BodyText.Text)); + Assert.AreEqual("Para visualizar a mensagem, por favor, use um cliente de e-mail compatÃ\u0083­vel/configurado para ver mensagens HTML!\r\n\r\n", message.BodyText.Text); + Assert.IsFalse(string.IsNullOrWhiteSpace(message.BodyHtml.Text)); + Assert.AreEqual("\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Qualquer dúvida estou a disposição.
\r\n
\r\n Atenciosamente,
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Ronald Santander
\r\n _________________________
\r\n
\r\n CLIENT
\r\n Consultor de Viagens
\r\n Tel.: + (55 11) 2222-4444
\r\n Tel.: + (55 11) 3333-6666
\r\n
\r\n
\r\n
\r\n Outros telefones
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ATENÃ\u0087Ã\u0083O!
\r\n
\r\n
\r\n
\r\n Prezado cliente, Seguindo a nova resolução do Regulador XXXXX, homologada em Abril/2016, e que impõe a emissão de certificado de seguro viagem individuais, tanto para viagem doméstica quanto internacional, as bandeiras American Express, Mastercard e Visa estão migrando o processo de emissão do certificado do seguro viagem, benefício incluso em suas soluções corporativas de pagamentos se utilizado pela sua empresa.
\r\n
\r\n
\r\n Todos os novos procedimentos de emissão do certificado do seguro viagem foram comunicados e disponibilizados aos gestores de viagens da sua empresa. Caso não tenha conhecimento do novo procedimento, se faz necessário verificar com o gestor responsável de sua empresa, pois a emissão do certificado é de total responsabilidade do viajante e requer acesso a ferramenta de emissão a cada viagem, por meio de login, senha e dados pessoais.
\r\n
\r\n
\r\n
\r\n INFORMAÃ\u0087Ã\u0095ES IMPORTANTES
\r\n
\r\n
\r\n
\r\n A garantia da reserva, do assento e da tarifa são a emissão do bilhete;
\r\n Tarifas sujeitas a alteração sem prévio aviso.
\r\n Atenção ao prazo de emissão das reservas;
\r\n Para alterações, cancelamentos ou reembolsos há incidência de multas e/ou diferenças tarifárias conforme regra do bilhete;
\r\n Multa por Churning: Segundo a política de reservas, poderá haver cobrança de multa em caso de solicitação/realização de sucessivas operações para o mesmo passageiro/ cia aérea/trecho. Esta cobrança, multa por Churning - Excessive or constant book/cancel activity , ocorre quando a cia aérea detecta o mesmo trecho aéreo ou parte dele solicitado a partir da segunda vez em datas idênticas ou próximas (até 5 dias antes ou depois para ida e/ou volta). As multas recebidas serão repassadas à empresa.
\r\n
\r\n
\r\n VIAGENS INTERNACIONAIS PARA BRASILEIROS
\r\n
\r\n
\r\n
\r\n Chegar no aeroporto com 3 horas de antecedência para o embarque;
\r\n Apresentar passaporte com validade mínima de 6 meses;
\r\n Para países que necessitam de visto, o mesmo deve estar válido no momento do embarque;
\r\n Para países que exigem vacina contra febre amarela, apresentar comprovante internacional com período de incubação de 10 dias;
\r\n Para maiores informações sobre vacinas necessárias ou indicadas para seu destino visite o site: http://www.anvisa.gov.br/viajante/ ;
\r\n Para viagens internacionais é necessário informar o Nome completo do passageiro (idêntico ao Passaporte), Data de nascimento, Número do passaporte, País de emissão do passaporte, Validade, Nacionalidade, País de residência, País de destino, Endereço no destino, Cidade, Estado, Cep. Endereço residencial, Cidade, Estado e Cep. Para inclusão das informações de segurança na reserva antes da emissão do bilhete;
\r\n
\r\n
\r\n VIAGENS NACIONAIS
\r\n
\r\n
\r\n
\r\n Chegar no aeroporto com 2 horas de antecedência para o embarque;
\r\n Apresentação obrigatória de um documento de identificação original com foto e atual para embarque;
\r\n Favor sempre informar o número de identidade, cartão de milhas e preferência de assento do passageiro no momento da reserva;\r\n \r\n
\"\"Dados da Ação
\r\n \r\n Forma de atendimento:\r\n  DESK MANAGER\r\n \r\n \r\n \r\n Causa:\r\n  ATUALIZAÃ\u0087Ã\u0083O\r\n \r\n
\r\n \r\n \"\"\r\n Descrição da Ação:\r\n \r\n \r\n  \r\n Bom dia \r\n
\r\n
cadastrado atualizado cliente control xpto certifications

Atenciosamente,
DONALD L. THRUMP
donald.thrump@domain.com
Telefone: (11)5555-2222
\r\n \r\n \r\n


\r\n \r\n \r\n  \r\n \r\n Para visualizar o conteúdo da Ação, por favor acessar:
\r\n https://domain.deskserver.ms/?LoginPortal\r\n \r\n \r\n \r\n \r\n \"\"\r\n Este e-mail é gerado automaticamente.\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n", message.BodyHtml.Text); + Assert.AreEqual(0, message.Attachments.Count); + Assert.AreEqual(2, message.LeafMimeParts.Count); } } } diff --git a/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit-html-special-char.eml b/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit-html-special-char.eml new file mode 100644 index 0000000..0863503 --- /dev/null +++ b/Class Library/ActiveUp.Net.Tests/resource/content-transfer-encode-8bit-html-special-char.eml @@ -0,0 +1,169 @@ +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=optionalserver.onmicrosoft.com; s=selector1-hostway-travel; + h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; +Authentication-Results: spf=none (sender IP is ) + smtp.mailfrom=fromemail@domain.com; +Received: from deskserver.ms (50.80.200.123) by + GRUPR80MB1276.lamprd80.prod.com (10.164.107.99) with Microsoft SMTP + Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id + 15.20.77.7; Wed, 27 Sep 2017 12:34:46 +0000 +Date: Wed, 27 Sep 2017 09:34:39 -0300 +Return-Path: fromemail@domain.com +To: destinatary@domain.com +From: Client support +Reply-to: Client support +Subject: CLIENT - BRASIL Status: OPEN / RESOLVED #0917-000622 +Message-ID: <3a8c760555b716f3834fef3a2b05f160@deskserver.ms> +X-Priority: 3 +X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net) +MIME-Version: 1.0 +Content-Type: multipart/alternative; + boundary="b1_3a8c760555b716f3834fef3a2b05f160" + + +--b1_3a8c760555b716f3834fef3a2b05f160 +Content-Type: text/plain; charset = "iso-8859-1" +Content-Transfer-Encoding: 8bit + +Para visualizar a mensagem, por favor, use um cliente de e-mail compatível/configurado para ver mensagens HTML! + + +--b1_3a8c760555b716f3834fef3a2b05f160 +Content-Type: text/html; charset = "iso-8859-1" +Content-Transfer-Encoding: 8bit + + + + + + + + + + + +
+ Qualquer dúvida estou a disposição.
+
+ Atenciosamente,
+
+
+
+
+
+
+
+
+
+
+
+
+ Ronald Santander
+ _________________________
+
+ CLIENT
+ Consultor de Viagens
+ Tel.: + (55 11) 2222-4444
+ Tel.: + (55 11) 3333-6666
+
+
+
+ Outros telefones
+
+
+
+
+
+
+ ATENÇÃO!
+
+
+
+ Prezado cliente, Seguindo a nova resolução do Regulador XXXXX, homologada em Abril/2016, e que impõe a emissão de certificado de seguro viagem individuais, tanto para viagem doméstica quanto internacional, as bandeiras American Express, Mastercard e Visa estão migrando o processo de emissão do certificado do seguro viagem, benefício incluso em suas soluções corporativas de pagamentos se utilizado pela sua empresa.
+
+
+ Todos os novos procedimentos de emissão do certificado do seguro viagem foram comunicados e disponibilizados aos gestores de viagens da sua empresa. Caso não tenha conhecimento do novo procedimento, se faz necessário verificar com o gestor responsável de sua empresa, pois a emissão do certificado é de total responsabilidade do viajante e requer acesso a ferramenta de emissão a cada viagem, por meio de login, senha e dados pessoais.
+
+
+
+ INFORMAÇÕES IMPORTANTES
+
+
+
+ A garantia da reserva, do assento e da tarifa são a emissão do bilhete;
+ Tarifas sujeitas a alteração sem prévio aviso.
+ Atenção ao prazo de emissão das reservas;
+ Para alterações, cancelamentos ou reembolsos há incidência de multas e/ou diferenças tarifárias conforme regra do bilhete;
+ Multa por Churning: Segundo a política de reservas, poderá haver cobrança de multa em caso de solicitação/realização de sucessivas operações para o mesmo passageiro/ cia aérea/trecho. Esta cobrança, multa por Churning - Excessive or constant book/cancel activity , ocorre quando a cia aérea detecta o mesmo trecho aéreo ou parte dele solicitado a partir da segunda vez em datas idênticas ou próximas (até 5 dias antes ou depois para ida e/ou volta). As multas recebidas serão repassadas à empresa.
+
+
+ VIAGENS INTERNACIONAIS PARA BRASILEIROS
+
+
+
+ Chegar no aeroporto com 3 horas de antecedência para o embarque;
+ Apresentar passaporte com validade mínima de 6 meses;
+ Para países que necessitam de visto, o mesmo deve estar válido no momento do embarque;
+ Para países que exigem vacina contra febre amarela, apresentar comprovante internacional com período de incubação de 10 dias;
+ Para maiores informações sobre vacinas necessárias ou indicadas para seu destino visite o site: http://www.anvisa.gov.br/viajante/ ;
+ Para viagens internacionais é necessário informar o Nome completo do passageiro (idêntico ao Passaporte), Data de nascimento, Número do passaporte, País de emissão do passaporte, Validade, Nacionalidade, País de residência, País de destino, Endereço no destino, Cidade, Estado, Cep. Endereço residencial, Cidade, Estado e Cep. Para inclusão das informações de segurança na reserva antes da emissão do bilhete;
+
+
+ VIAGENS NACIONAIS
+
+
+
+ Chegar no aeroporto com 2 horas de antecedência para o embarque;
+ Apresentação obrigatória de um documento de identificação original com foto e atual para embarque;
+ Favor sempre informar o número de identidade, cartão de milhas e preferência de assento do passageiro no momento da reserva; + +
Dados da Ação
+ + Forma de atendimento: +  DESK MANAGER + + + + Causa: +  ATUALIZAÇÃO + +
+ + + Descrição da Ação: + + +   + Bom dia +
+
cadastrado atualizado cliente control xpto certifications

Atenciosamente,
DONALD L. THRUMP
donald.thrump@domain.com
Telefone: (11)5555-2222
+ + +


+ + +   + + Para visualizar o conteúdo da Ação, por favor acessar:
+ https://domain.deskserver.ms/?LoginPortal + + + + + + Este e-mail é gerado automaticamente. + + +
+ + + + + + + + +--b1_3a8c760555b716f3834fef3a2b05f160-- \ No newline at end of file diff --git a/Class Library/ActiveUp.Net.Tests/resource/only_header_2.eml b/Class Library/ActiveUp.Net.Tests/resource/only_header_2.eml new file mode 100644 index 0000000..55765ed --- /dev/null +++ b/Class Library/ActiveUp.Net.Tests/resource/only_header_2.eml @@ -0,0 +1,70 @@ +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hostway.travel; + s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; + bh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=; + b=JIAhrdolQUVfO4Q3xKUZ2UqFmDgMuG7QPLpz6Jch9jBiwpcdzzwFuGSC0ys1xQm3dfOyM54NieAyJ9Mv64LGU4VxN1ewKMDIgdz1zleYnRwMnfO6p4yokx25ubyb02BCI1MAUXflRLBsU0LJ5kKyX/fZgRAtAU3UmyFL23tu0+Q= +Resent-From: +Received: from CP2PR80CA0150.lamprd80.prod.outlook.com (10.165.252.16) by + RO1PR80MB0106.lamprd80.prod.outlook.com (10.164.233.15) with Microsoft SMTP + Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id + 15.20.218.12; Tue, 14 Nov 2017 12:53:11 +0000 +Received: from CY1NAM02FT029.eop-nam02.prod.protection.outlook.com + (2a01:111:f400:7e45::200) by CP2PR80CA0150.outlook.office365.com + (2603:10d6:102:2d::16) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.218.12 via Frontend + Transport; Tue, 14 Nov 2017 12:53:10 +0000 +Authentication-Results: spf=none (sender IP is 154.16.167.2) + smtp.mailfrom=abidos.com.br; hostwayviagens.com.br; dkim=none (message not + signed) header.d=none;hostwayviagens.com.br; dmarc=none action=none + header.from=abidos.com.br; +Received-SPF: None (protection.outlook.com: abidos.com.br does not designate + permitted sender hosts) +Received: from mail.supermercadodeofertas.com.br (154.16.167.2) by + CY1NAM02FT029.mail.protection.outlook.com (10.152.75.143) with Microsoft SMTP + Server id 15.20.197.9 via Frontend Transport; Tue, 14 Nov 2017 12:53:09 +0000 +From: Faculdade Faveni +To: "vipdesk@hostwayviagens.com.br" +Subject: =?UTF-8?B?Q29uY2x1YSBzdWEgcG9zIGVtIDYgbWVzZXMhISE=?= +Date: Tue, 14 Nov 2017 12:53:08 +0000 +X-Ref-1: Cvl5H O6K +Reply-To: +Return-Path: parceiro@abidos.com.br +List-Unsubscribe: +Content-Type: text/html; charset="iso-8859-1" +Content-Transfer-Encoding: base64 +Message-ID: +X-EOPAttributedMessage: 0 +X-EOPTenantAttributedMessage: c709a8cf-ebee-4c19-a146-0139aa7878ea:0 +X-Forefront-Antispam-Report: + CIP:154.16.167.2;IPV:NLI;CTRY:US;EFV:NLI;SFV:SPM;SFS:(6009001)(5340300001)(2980300002)(1130300004)(428002)(596005)(359002)(189002)(199003)(349900001)(349012);DIR:INB;SFP:;SCL:9;SRVR:RO1PR80MB0106;H:mail.supermercadodeofertas.com.br;FPR:;SPF:None;PTR:mail.supermercadodeofertas.com.br;MX:1;A:1;CAT:BULK;LANG:pt; +X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT029;1:5iB2mHzYdLSfWpys5C1W2zYscpk7aAsHRSBTdlDvUaPaquE3BTfEQ6v29UtYzPw28TC9xq5OWwgs80FBDoL69UzudG+bYPmtah5+svLY6iWkQXUcaYj6GRIsOyQRBPeK +MIME-Version: 1.0 +X-MS-PublicTrafficType: Email +X-MS-Office365-Filtering-Correlation-Id: dd2959b8-1db5-444a-02ac-08d52b5ea8ad +X-Microsoft-Antispam: + UriScan:;BCL:9;PCL:0;RULEID:(22001)(23075)(4534020)(71702078);SRVR:RO1PR80MB0106; +X-Microsoft-Exchange-Diagnostics: + 1;RO1PR80MB0106;3:xoefwlKJjTJXRhA6nBdPYy8mcZlnCisNRM26nnqvxtLr34Rr8N9LYA6wVBlJ3j7Pxn54VC4oXoWFU83rJ/cuy0tS1zUDMwGn400tJ3c+YoiRw8vyP1hdbrkie7Jh2PX3rTjkDcdPr7oFjfiue9RzfZdQ2otBpdbPlShWwTWCGSbURgtmproncI/YXM38wMoXaSI3Xi/n1rO8cxrUGNNGYUR63Opq8U1jss1ZWb4W3zqNb09+jbsx+UjP9c2sHTnKO5hIo2o2dPY5UxXHwagcCuJCrI2uoYDRyn119ZpCiF1FRtlMlIgBznOY1q7aHVcwd+2wOwHOQlOPuC88xmGngHVBXlr4u9FMcK96YT1uHko=;25:V5iGET4bRVrZX9tNaiw8Dil2OmzW5LHAI2fL/e0epIXUTFVk+8gGu4AhEVB4Oinj+3wbsXVvN0H1i8wrIQSnsx7dPDXUvTyfKgxI+QWMUgqqXYqMqR23f2QeqM1wIH2H3RzZTbXadSg148FMgIaKwlCVnKR1PULqz4HvDD5+u2aCc11/2JoIHwjUmRv+ZIux2jrzcuZiGbIrffa5BDn7R3+xDhgpVAinurpxxHUMFVo=;31:qnRgXldjWhbO3o3iYsqxA7Qxt8j1WwT8tw4JDPz2UWV+uZwGDBlWlOZpe7x25MX2emyjhCFInwcNhtC+eLTA8S0x5q+DkzfweLZ3s+gTUGl9vGgXuDE3OgQfxb1cl4L+ +X-MS-TrafficTypeDiagnostic: RO1PR80MB0106:|RO1PR80MB0106: +X-Microsoft-Exchange-Diagnostics: + 1;RO1PR80MB0106;20:1821yRltUnu9mEUaLRVdk8YldWGUdO0olj4O9ow92ogkH7WxhTlFaqRCpbv4JmP1oPjvqiGEfj+/OhYbn8UyMCX0B5s8gQMmPeWLQj6K563C0Bzxkvrt1t/zjTwloeVQJGeyeOO2DrwLqmX0TcyoQ3MoPCcLN9pd5/6hJr/zye3zGnd6LQCKjfBOM5wOMCaOUk71+cZeaQ2I6ulaNGpa5CrVX2UIOvr0KDVr22z0OqzPE+znDXtudCfbcm388MD1K5YBfG8KPZFemt6DKO2OF4xXWfRdAD6ztyJ3AtISEkxwNSKRtSFKOZC3xlix3o4nVHC/6YqLGr1zDeY3HT2PTPpjIvBQS3FN4h0oNBfi8eQVZwhNeP/ey1awPoS/C0EoTmILKRQIuTA9RkBsgAYTW5qiiQy9Lg8eZZqoJC+ksWx5+aRtsMb/acMaGKmcEToYrtma/PCu7czFJZspQzrTKfTI39x+y7jXNXo7nF3RvrieIFqunZdi72jl+Ofw+bMR;4:BfXDwh8IhSfcvwFsp7ed7EX3Ct2P2oQqK3vxSzM//qVuy4gHNizRVxNNj9mNsUAjqkgrRc5COX9iddUW/fw5QuRjlyyYvU+mPZRcFjqH58ri6BG7JK4xx6rU4MSKGMcoyi/z74wdLvHzXG8F/TxnupHIZ6OQ7ZN5NvjaR1AmXww= +X-Exchange-Antispam-Report-Test: UriScan:; +X-Exchange-Antispam-Report-CFA-Test: + BCL:9;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(2401047)(701105)(8121501046)(9101536074)(12181506113)(93006095)(93001095)(10201501046)(3231022)(8191506053)(100000703101)(100105400095)(3002001)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:RO1PR80MB0106;BCL:9;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:RO1PR80MB0106; +X-CustomSpam: Bulk Mail | Bulk Mail +X-Microsoft-Exchange-Diagnostics: + 1;RO1PR80MB0106;23:lPYVAgxML0JewdwN1imsBYvdYCEprqVIrjZrViLZnK1gR1suUVuvtm1jlD3oDOv2BbWUhLSwHM2lr4H0ftlfLcOLoYyAwn8XTYN9uHbySVsIywV2Kir+ioKNhu3T0PD7ZNmjawEePz3fyEc0kB6eQDHAFryBB+ekP8dN/aevjca6cuh/if43KpGMANH0F7B55qBR95ggt0qfMsfnoAj4oUOSlA+6Bq3qMGEMX2AuTY01lm9khHu57ezmW7X4Z2FnCx9Ivj68ccchaWeohvwjHoASwfIuEUPWHnC4WTyL/fm64qRzfLBch7r1JXb++XhOfk92JhMviTddq9wg5WFRqHId4dw+57BblBoGRg9dcUdfDJgtz+z6fQvJ0zdrdVNcfeueZNLTYBhsTR0LLr0jMA==;6:U6EZX0bE0jJHONnMpqF7HruQeVypc4CL4gybGeolMK8hec5qfyxnTzJZ5z6Mhyf7SErbgAxQyESCgcqw7p217c4f3O9+H4Eh0Wed74e+AP22e2XryrQpwE4Q102d8P1o3WIX8TMDLHNjs/nqlkIUxiaoj5BVXhnIFYBK8AjDMXEtK3Y8c+vDnT9bLe3Oeoj2oDVw5XrgjZ77lKf9m32EUkSBcDENzWi6Uqm+pwqxL2Sy0Al47CDLdi2HGnQs/z4/DAppEbXjLIX/M+SSAgGdfw/nqYh7SnKNmhyTNVTi0ew=;5:7WUK3/XjFKYxdorOjxj8RUaBmDCGLumtzVpcjwCY1gketxbXdQ2PtU5XRuedoNPnwhwihCoZ97oj9HWEx+QCSPqAby2DmsuQWWvGOL3EICPAQN5BCFrHzHUS56cqZtfA67gqhFVlzf98HGwuYhOFYoyj3te7QeGM5AlcLSjy1Ag= +X-Microsoft-Exchange-Diagnostics: + 1;RO1PR80MB0106;24:u/EmACmqz+2QxMUGTdOwuVj/kebIeTRYjlsSzmgXrN/zdXpeT7HeDNlpESy9JG5yp7yqHO3BQWC5zYuKvydE1g==;7:e0VmuoQ8hcaCk7ECv4JYTgsRzwFrjZEU3PBRlgRl0WtisNGUfxvRi+UCe2LGKJPZTEOGyy1wMk9cwW93HCr3hUUB7C+hFvmWUDHxzynP7zFAbqCvYjOiHTbAHDdy4oEbNFzMvpin2EOD1Bb56xBxu+lBotlu6Tqlp0uwfdL5uY5cpJrIwlbZ4B0qQj53RqAf9n1+BowuIPWxTnSD7YQbgesGH2cP5j0jnn4svHls26y4l4LHHmuCGZRDDxyGYM38eKeUzkiqilf4UgI3ImGJd3bXd6lkSB3mM0KYvxBigug=;20:CfwChLYxhEEfDmbUl99hmH6utIe/wdkeD1VKyp/dR/qFwDDusTG6R7GE/8QZXrqgd3/gVy0Nqx63w3XAXrIghGtcl17gK1XEK/DDEQDXNM8CKbJrg0uU9qeleI6NKcRJmuLy823/MriFk+reWV2F0UHUQDPKAJoKeNp84mALI2bHK3ltssEZ0a4niJ4xaXntZXNjiJMNVbgHT2fwMbwRCWFZ8r+38DjA5DmuLjMALIXBAn/i242uC9XjoD9yeyTDINLxjcG/SM9KuEMI2Vwe0kMZx2lixyidoCu7vF4NSrgfZKNA+u7v/lXQ5eEqNaqjY6etBh72vRMgyLcTzl16k7WxaeNm5uZ9hdyaLtVfFVoWbFj+q4wGGScA+8sOJbO51M9kTtuJP2Ut1wjiuvr9FyLkzlmdq+McDWSUmO+jMxyhYUj1SFp+dfu8idXHFUkm4Z4cFTCr08tKQ9K7dLBXL4oJ5hntOLNVEduZRFuQhLvio+9P+lZd+QJiyhmLoH57 +SpamDiagnosticOutput: 1:6 +SpamDiagnosticMetadata: Default:9 +X-MS-Exchange-Inbox-Rules-Loop: vipdesk@hostway.travel +X-Microsoft-Exchange-Diagnostics: + 1;RO1PR80MB0106;23:l70+jaaaGISH7JuWwWaWUQ1DYuHN8m9lK7iB0FD18yTRmoLhc3MygvoQH7u6jZeqlHNRXGeziSrP5NWKKOamHGumn6R87ZRK9lxrShcbKa2LVEAHeCgoyzo7yn3KmZLCBtQSS5TLfqSOfqwby52Uvw== +X-ExternalRecipientOutboundConnectors: c709a8cf-ebee-4c19-a146-0139aa7878ea +X-OriginatorOrg: hostway.travel +X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2017 12:53:09.0561 + (UTC) +X-MS-Exchange-CrossTenant-Network-Message-Id: dd2959b8-1db5-444a-02ac-08d52b5ea8ad +X-MS-Exchange-CrossTenant-Id: c709a8cf-ebee-4c19-a146-0139aa7878ea +X-MS-Exchange-CrossTenant-FromEntityHeader: Internet +X-MS-Exchange-Transport-CrossTenantHeadersStamped: RO1PR80MB0106 \ No newline at end of file diff --git a/Class Library/ActiveUp.Net.Tests/resource/quoted-printable-notepad-linebreak.eml b/Class Library/ActiveUp.Net.Tests/resource/quoted-printable-notepad-linebreak.eml index 21ce511..984e8e9 100644 --- a/Class Library/ActiveUp.Net.Tests/resource/quoted-printable-notepad-linebreak.eml +++ b/Class Library/ActiveUp.Net.Tests/resource/quoted-printable-notepad-linebreak.eml @@ -1,16 +1,16 @@ -Return-Path: +Return-Path: Received: from a2-sumeria7-2 (a2-sumeria7.host.intranet [10.129.137.204]) by cyruslmtpafil29-a with LMTPA; Fri, 15 Apr 2016 11:24:06 -0300 Received: from ch-host.clicholding.com.br (ch-host.clicholding.com.br [189.36.14.162]) by a2-snowball1.uhserver.com (Postfix) with ESMTP id 3qmftG5Mvlzft64R - for ; Fri, 15 Apr 2016 11:24:04 -0300 (BRT) + for ; Fri, 15 Apr 2016 11:24:04 -0300 (BRT) Received: from wtbweb08 ([127.0.0.1]) by ch-host.clicholding.com.br with Microsoft SMTPSVC(8.0.9200.16384); Fri, 15 Apr 2016 11:24:04 -0300 -Message-ID: <6b7922a0-7f40-444b-b6b9-b8b570552aaf@argoit.com.br> +Message-ID: <6b7922a0-7f40-444b-b6b9-b8b570552aaf@server.com> MIME-Version: 1.0 -From: =?iso-8859-1?Q?Gest=E3o_de_Viagens?= -To: "testeodare@encontact.com.br" +From: =?iso-8859-1?Q?Gest=E3o_de_Viagens?= +To: "testreceiver@enterprise.com" Date: 15 Apr 2016 11:24:04 -0300 Subject: =?iso-8859-1?Q?Solicita=E7=E3o_=2359_=2D_Aguardando_Cota=E7=E3?= =?iso-8859-1?Q?o_=2D_TESTE_HOTEL_=2D_TESTE_=2D_C=2E_Custo_TESTE_TES?= @@ -19,7 +19,7 @@ Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-OriginalArrivalTime: 15 Apr 2016 14:24:04.0524 (UTC) FILETIME=[769E8EC0:01D19722] -Alatur,=0D=0DFoi criada uma nova solicita=E7=E3o para TESTE SOLIC= +Sender,=0D=0DFoi criada uma nova solicita=E7=E3o para TESTE SOLIC= ITANTE.=0D=0DCliente: TESTE HOTEL=0DEmpresa: TESTE=0DC. Custo: TE= STE TESTE=0D=0D=0D>>> PASSAGEM A=C9REA=0DDescri=E7=E3o.: (GRU) Cu= mbica / (LAS) Las Vegas 04/Jan Manh=E3 (06:00 =E0s 12:00) (Econ=F4= @@ -27,11 +27,11 @@ mica)=0DHor=E1rio...: considerando sa=EDda=0DPagamento.: FATURADO= =0D=0DDescri=E7=E3o.: (LAS) Las Vegas / (GRU) Cumbica 07/Jan Manh= =E3 (06:00 =E0s 12:00) (Econ=F4mica)=0DHor=E1rio...: considerando= sa=EDda=0DPagamento.: FATURADO=0D=0D=0D>>> SOLICITANTE=0Dteste s= -olicitante (fulfillment@alatur.com)=0D=0D=0DDestinat=E1rios que e= -st=E3o recebendo esse email: =0Dtms@argoit.com.br (tms@argoit.com= -.br)=0Dteste solicitante (fulfillment@alatur.com)=0Dtesteodare@en= -contact.com.br (testeodare@encontact.com.br)=0Dodare@encontact.co= -m.br (odare@encontact.com.br)=0D=0DPara acess=E1-la clique em: =0D= - =0D=0D= EMAIL AUTOM=C1TICO, N=C3O RESPONDA ESSA MENSAGEM diff --git a/Class Library/ActiveUp.Net/ActiveUp.Net.nuspec b/Class Library/ActiveUp.Net/ActiveUp.Net.nuspec index 3aaa324..b688fb9 100644 --- a/Class Library/ActiveUp.Net/ActiveUp.Net.nuspec +++ b/Class Library/ActiveUp.Net/ActiveUp.Net.nuspec @@ -4,10 +4,10 @@ MailSystem.Net-trunk $version$ $title$ - pmengal (https://mailsystem.codeplex.com/team/view) + pmengal (https://github.com/pmengal/MailSystem.NET) pmengal - https://mailsystem.codeplex.com/license - https://mailsystem.codeplex.com + https://github.com/pmengal/MailSystem.NET/blob/master/LICENSE.txt + https://github.com/pmengal/MailSystem.NET false MailSystem is a suite of .NET components that provide users with an extensive set of email tools. MailSystem provides full support for SMTP, POP3, IMAP4, NNTP, MIME, S/MIME, OpenPGP, DNS, vCard, vCalendar, Anti-Spam (Bayesian , RBL, DomainKeys), Queueing, Mail Merge and WhoIs Mail Library csharp diff --git a/PoweredByNDepend.png b/PoweredByNDepend.png new file mode 100644 index 0000000..75b6dae Binary files /dev/null and b/PoweredByNDepend.png differ diff --git a/README.md b/README.md index f23fc03..280c0ec 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ In addition to the library, the suite provides the developer with a full feature - Triggers include Daily, Weekly, Monthly or a specific day, week and month of year - Multiple XML task list configuration file support -![Powered by ndepend](http://download-codeplex.sec.s-msft.com/Download?ProjectName=mailsystem&DownloadId=738843) +[![Powered by ndepend](PoweredByNDepend.png)](https://www.ndepend.com/) **Who's using this**