Ejemplo n.º 1
0
        public void NonLatinCharactersInRecipientNameResultsInNoSpaces()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var message = new hMailServer.Message();

            message.AddRecipient("Tестов Тест Тестостеронович", account.Address);
            message.Subject = "Test";
            message.Charset = "utf-8";
            message.Body    = "Test body.";
            message.Save();

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            // Important:
            //   RFC 2047: http://www.faqs.org/rfcs/rfc2047.html
            //   The notation of RFC 822 is used, with the exception that white space
            //   characters MUST NOT appear between components of an 'encoded-word'.
            //
            //   Also, there should be a space separating the encoded word with the following
            //   non-encoded word.
            Assert.IsTrue(
                messageText.Contains(
                    "To: \"=?utf-8?B?VNC10YHRgtC+0LIg0KLQtdGB0YIg0KLQtdGB0YLQvtGB0YLQtdGA0L7QvdC+?=\r\n =?utf-8?B?0LLQuNGH?=\" <*****@*****.**>"));
        }
Ejemplo n.º 2
0
        public void TestSaveMessageInExistingIMAPFolder()
        {
            Settings settings = SingletonProvider <TestSetup> .Instance.GetApp().Settings;

            Account oAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            // Check that the message does not exist
            POP3ClientSimulator.AssertMessageCount(oAccount1.Address, "test", 0);

            // Send a message to the account.
            IMAPFolder folder = oAccount1.IMAPFolders.get_ItemByName("INBOX");

            hMailServer.Message oMessage = folder.Messages.Add();

            CustomAssert.AreEqual(0, oMessage.State);

            oMessage.Body    = "Välkommen till verkligheten";
            oMessage.Subject = "Hej";
            oMessage.Save();

            CustomAssert.AreEqual(2, oMessage.State);
            CustomAssert.IsFalse(oMessage.Filename.Contains(settings.PublicFolderDiskName));
            CustomAssert.IsTrue(oMessage.Filename.Contains(_domain.Name));

            // Check that the message exists
            string message = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

            CustomAssert.IsNotEmpty(message);
            CustomAssert.Less(0, message.IndexOf("Hej"));
        }
Ejemplo n.º 3
0
        public void TestSwedishAndChineseCombination()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string swedishAndChinese = "ÅÄÖ汉语";
            string attachmentName    = swedishAndChinese + ".zip";

            string filename = Path.Combine(Path.GetTempPath(), attachmentName);

            File.WriteAllText(filename, swedishAndChinese);

            var message = new hMailServer.Message();

            message.AddRecipient("test", account.Address);
            message.From        = "Test";
            message.FromAddress = account.Address;
            message.Body        = swedishAndChinese;
            message.Attachments.Add(filename);
            message.Save();

            CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
            Assert.AreNotEqual(0, downloadedMessage.Attachments.Count);
            Attachment attachment = downloadedMessage.Attachments[0];

            Assert.AreEqual(attachmentName, attachment.Filename);

            Assert.AreEqual(swedishAndChinese + Environment.NewLine, downloadedMessage.Body);
        }
Ejemplo n.º 4
0
        public void TestModifyBodyWithExistingAttachments()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string swedish        = "abc.zip";
            string attachmentName = swedish + ".zip";
            string filename       = Path.Combine(Path.GetTempPath(), attachmentName);

            File.WriteAllText(filename, swedish);


            var message = new hMailServer.Message();

            message.AddRecipient("test", account.Address);
            message.Attachments.Add(filename);
            message.From        = swedish;
            message.FromAddress = account.Address;
            message.Subject     = swedish;
            message.Body        = "";
            message.Save();

            CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];

            downloadedMessage.Body = "Test";
            downloadedMessage.Save();
        }
Ejemplo n.º 5
0
        public void TestJapaneseAttachments()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string attachmentName = "本本本.zip";

            string filename = Path.Combine(Path.GetTempPath(), attachmentName);

            File.WriteAllText(filename, "tjena moss");

            var message = new hMailServer.Message();

            message.AddRecipient("test", account.Address);
            message.From        = "Test";
            message.FromAddress = account.Address;
            message.Body        = "hejsan";
            message.Attachments.Add(filename);
            message.Save();

            CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
            Assert.AreNotEqual(0, downloadedMessage.Attachments.Count);
            Attachment attachment = downloadedMessage.Attachments[0];

            Assert.AreEqual(attachmentName, attachment.Filename);
        }
Ejemplo n.º 6
0
        public void TestEncodingOfStringIncludingSpace()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var message = new hMailServer.Message();

            message.AddRecipient("test", account.Address);
            message.From        = "Test";
            message.FromAddress = account.Address;
            message.Subject     = "test mit encoding und deutc ü...";
            message.Body        = "Test";
            message.Save();

            CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            string[] lines = messageText.Split(Environment.NewLine.ToCharArray());

            foreach (string line in lines)
            {
                if (line.ToLower().StartsWith("subject: "))
                {
                    string subject = line.Substring("subject: ".Length + 1);

                    // encoded part should not contain space.
                    Assert.IsFalse(subject.Contains(" "));

                    break;
                }
            }
        }
Ejemplo n.º 7
0
        public void TestMailCreationUnicodeAndAttachment()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string filename = Path.Combine(Path.GetTempPath(), "dummy.txt");

            File.WriteAllText(filename, "tjena moss");

            var message = new hMailServer.Message();

            message.AddRecipient("", account.Address);
            message.Charset = "utf-8";
            message.Attachments.Add(filename);
            // may cause an Assert.
            message.HTMLBody = "Test of message... 日本語";
            message.Body     = "Test of message... 日本語";
            message.Save();

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");


            int    headerEnd = messageText.IndexOf("\r\n\r\n");
            string header    = messageText.Substring(0, headerEnd);

            Assert.IsTrue(header.Contains("Content-Type: multipart/mixed; charset=\"utf-8\""));

            File.Delete(filename);
        }
Ejemplo n.º 8
0
        public void TestAddBodyAfterAttachment()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string filename = Path.Combine(Path.GetTempPath(), "dummy.txt");

            File.WriteAllText(filename, "tjena moss");

            var message = new hMailServer.Message();

            message.AddRecipient("", account.Address);
            message.Attachments.Add(filename);
            message.Body = "Hello";
            message.Save();

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            int    headerEnd = messageText.IndexOf("\r\n\r\n");
            string header    = messageText.Substring(0, headerEnd);

            Assert.IsTrue(header.Contains("Content-Type: multipart/mixed;"));
            Assert.IsTrue(messageText.Contains("Hello"));
            Assert.IsTrue(messageText.Contains("dummy.txt"));

            File.Delete(filename);
        }
Ejemplo n.º 9
0
        public void SingleLatinCharacterRecipient()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var message = new hMailServer.Message();

            message.AddRecipient("Ö", account.Address);
            message.Charset = "utf-8";
            message.Body    = "Test body.";
            message.Save();

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            Assert.IsTrue(messageText.Contains("To: \"=?utf-8?B?w5Y=?=\" <*****@*****.**>"));
        }
Ejemplo n.º 10
0
        public void TestMailCreationUnicodeBodyAndHtml()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var message = new hMailServer.Message();

            message.AddRecipient("", account.Address);
            message.Charset  = "utf-8";
            message.Body     = "Test of message... 日本語";
            message.HTMLBody = "Test of message... 日本語";
            message.Save();

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            Assert.IsTrue(messageText.Contains("Content-Type: text/html; charset=\"utf-8\""));
            Assert.IsTrue(messageText.Contains("Content-Type: text/plain; charset=\"utf-8\""));
        }
Ejemplo n.º 11
0
        public void NonLatinCharactersInRecipientNameResultsInBoxesInThunderbird()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var message = new hMailServer.Message();
             //message.AddRecipient("Тестов Тест ТестостероновичТестостероновичТестостероновичТестостероновичТестостероновичТестостероновичТестостероновичТестостероновичТестостероновичТестостероновичТестостероновичТестостеронович", account.Address);
             message.AddRecipient(
            "ТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероноТестовТестТестостероно",
            account.Address);
             message.Subject = "Test";
             message.Charset = "utf-8";
             message.Body = "Test body.";
             message.Save();

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             // Important:
             //   RFC 2047: http://www.faqs.org/rfcs/rfc2047.html
             //   The notation of RFC 822 is used, with the exception that white space
             //   characters MUST NOT appear between components of an 'encoded-word'.
             //
             //   Also, there should be a space separating the encoded word with the following
             //   non-encoded word.

             string match =
            "To: \"=?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\r\n" +
            " =?utf-8?B?0KLQtdGB0YLQvtCy0KLQtdGB0YLQotC10YHRgtC+0YHRgtC10YDQvtC90L4=?=\" <*****@*****.**>";

             CustomAssert.IsTrue(messageText.Contains(match));
        }
Ejemplo n.º 12
0
        public void TestMailCreationPlainText()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var message = new hMailServer.Message();

            message.AddRecipient("", account.Address);
            message.Body = "Hello";
            message.Save();

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            int    headerEnd = messageText.IndexOf("\r\n\r\n");
            string header    = messageText.Substring(0, headerEnd);

            Assert.IsTrue(header.Contains("Content-Type: text/plain; charset=\"utf-8\""));
            Assert.IsTrue(header.Contains("Content-Transfer-Encoding: quoted-printable"));
            Assert.IsTrue(messageText.Contains("Hello"));
        }
Ejemplo n.º 13
0
        public void TestDanishSubject()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string croatianAndDanish = "ʒʥʨPiskefløde";

            var message = new hMailServer.Message();

            message.AddRecipient("test", account.Address);
            message.From        = "Test";
            message.FromAddress = account.Address;
            message.Subject     = croatianAndDanish;
            message.Body        = "hej";
            message.Save();

            CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
            Assert.AreEqual(croatianAndDanish, downloadedMessage.Subject);
        }
Ejemplo n.º 14
0
        public void TestEncodeWord()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string croatianAndDanish = "ʒʥʨPiskefløde";
            var    message           = new hMailServer.Message();

            message.Subject = croatianAndDanish;
            message.AddRecipient("", account.Address);
            message.Save();

            Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            hMailServer.Message apiMessage = account.Messages[0];

            Assert.AreEqual(apiMessage.Subject, croatianAndDanish);
            string fileContents = File.ReadAllText(apiMessage.Filename);

            Assert.IsFalse(fileContents.Contains(croatianAndDanish));
        }
Ejemplo n.º 15
0
        public void TestMailCreationHTMLAndPlainTextReverse()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var message = new hMailServer.Message();

            message.AddRecipient("", account.Address);
            message.Body     = "PlainTextBody";
            message.HTMLBody = "HTMLBody";
            message.Save();

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            int    headerEnd = messageText.IndexOf("\r\n\r\n");
            string header    = messageText.Substring(0, headerEnd);

            Assert.IsTrue(header.Contains("Content-Type: multipart/alternative"));
            Assert.IsFalse(header.Contains("Content-Transfer-Encoding: quoted-printable"));
            Assert.IsTrue(messageText.Contains("PlainTextBody"));
            Assert.IsTrue(messageText.Contains("HTMLBody"));
        }
Ejemplo n.º 16
0
        public void TestSendMessage()
        {
            Account oAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            // Send a message to the account.
            var oMessage = new hMailServer.Message();

            CustomAssert.AreEqual(0, oMessage.State);

            oMessage.AddRecipient("Martin", oAccount1.Address);
            oMessage.Body    = "Välkommen till verkligheten";
            oMessage.Subject = "Hej";
            oMessage.Save();

            CustomAssert.AreEqual(1, oMessage.State);

            // Check that the message exists
            string message = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

            CustomAssert.IsNotEmpty(message);
            CustomAssert.Less(0, message.IndexOf("Hej"));
        }
Ejemplo n.º 17
0
        public void TestMultipleLanguages()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string manyLanguages = "中文åäöん文t͡ɬɪŋ";

            var message = new hMailServer.Message();

            message.AddRecipient("test", account.Address);
            message.From        = manyLanguages;
            message.FromAddress = account.Address;
            message.Subject     = manyLanguages;
            message.Body        = manyLanguages;
            message.Save();

            CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
            Assert.AreEqual(manyLanguages, downloadedMessage.Subject);
            Assert.AreEqual(manyLanguages, downloadedMessage.From);
            Assert.AreEqual(manyLanguages + Environment.NewLine, downloadedMessage.Body);
        }
Ejemplo n.º 18
0
        public void TestMostlyLatinCharacters()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var message = new hMailServer.Message();

            message.AddRecipient("Test Recipient: Тест", account.Address);
            message.Subject = "Test Subject: Тест";
            message.Charset = "utf-8";
            message.Body    = "Test body.";
            message.Save();

            string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            // Important:
            //   RFC 2047: http://www.faqs.org/rfcs/rfc2047.html
            //   The notation of RFC 822 is used, with the exception that white space
            //   characters MUST NOT appear between components of an 'encoded-word'.
            //
            //   Also, there should be a space separating the encoded word with the following
            //   non-encoded word.
            Assert.IsTrue(messageText.Contains("To: \"=?utf-8?B?VGVzdCBSZWNpcGllbnQ6INCi0LXRgdGC?=\" <*****@*****.**>"));
        }
Ejemplo n.º 19
0
        public void TestSaveMessageInPublicIMAPFolder()
        {
            Settings settings = SingletonProvider <TestSetup> .Instance.GetApp().Settings;

            IMAPFolders publicFolders = settings.PublicFolders;

            IMAPFolder testFolder = publicFolders.Add("TestFolder");

            testFolder.Save();

            // Send a message to the account.
            hMailServer.Message oMessage = testFolder.Messages.Add();

            CustomAssert.AreEqual(0, oMessage.State);

            oMessage.Body    = "Välkommen till verkligheten";
            oMessage.Subject = "Hej";
            oMessage.Save();

            CustomAssert.AreEqual(2, oMessage.State);
            CustomAssert.IsTrue(oMessage.Filename.Contains(settings.PublicFolderDiskName));
            CustomAssert.IsFalse(oMessage.Filename.Contains(_domain.Name));
        }
Ejemplo n.º 20
0
        public void TestReplaceFullPathInPublicFolderWithPartialPath()
        {
            Application application = SingletonProvider <TestSetup> .Instance.GetApp();

            Account account1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPFolders publicFolders = _settings.PublicFolders;
            IMAPFolder  folder        = publicFolders.Add("Share1");

            folder.Save();

            hMailServer.Message message = folder.Messages.Add();
            message.Subject = "Test";
            message.Save();

            // Move the message file to another folder.
            string publicFolderPath = Path.Combine(_application.Settings.Directories.DataDirectory, "#Public");
            string fileName         = Path.Combine(publicFolderPath, "randomMail.eml");

            File.Move(message.Filename, fileName);

            // Update the database with the 'invalid' path.
            string sql = string.Format("update hm_messages set messagefilename = '{0}' where messageid = {1}",
                                       TestSetup.Escape(fileName), message.ID);

            SingletonProvider <TestSetup> .Instance.GetApp().Database.ExecuteSQL(sql);

            // Now try to insert the message.
            CustomAssert.IsTrue(_application.Utilities.ImportMessageFromFile(fileName, 0));

            _application.Reinitialize();

            string newMessgaeFilename = _settings.PublicFolders[0].Messages[0].Filename;

            CustomAssert.AreNotEqual(fileName, newMessgaeFilename);
            CustomAssert.IsTrue(File.Exists(newMessgaeFilename));
        }
Ejemplo n.º 21
0
        public void TestAddBodyAfterAttachment()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string filename = Path.Combine(Path.GetTempPath(), "dummy.txt");
             File.WriteAllText(filename, "tjena moss");

             var message = new hMailServer.Message();
             message.AddRecipient("", account.Address);
             message.Attachments.Add(filename);
             message.Body = "Hello";
             message.Save();

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             int headerEnd = messageText.IndexOf("\r\n\r\n");
             string header = messageText.Substring(0, headerEnd);

             CustomAssert.IsTrue(header.Contains("Content-Type: multipart/mixed;"));
             CustomAssert.IsTrue(messageText.Contains("Hello"));
             CustomAssert.IsTrue(messageText.Contains("dummy.txt"));

             File.Delete(filename);
        }
Ejemplo n.º 22
0
        public void TestSwedishAndChineseCombination()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string swedishAndChinese = "ÅÄÖ汉语";
             string attachmentName = swedishAndChinese + ".zip";

             string filename = Path.Combine(Path.GetTempPath(), attachmentName);
             File.WriteAllText(filename, swedishAndChinese);

             var message = new hMailServer.Message();
             message.AddRecipient("test", account.Address);
             message.From = "Test";
             message.FromAddress = account.Address;
             message.Body = swedishAndChinese;
             message.Attachments.Add(filename);
             message.Save();

             TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

             hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
             CustomAssert.AreNotEqual(0, downloadedMessage.Attachments.Count);
             Attachment attachment = downloadedMessage.Attachments[0];
             CustomAssert.AreEqual(attachmentName, attachment.Filename);

             CustomAssert.AreEqual(swedishAndChinese + Environment.NewLine, downloadedMessage.Body);
        }
Ejemplo n.º 23
0
        public void TestMostlyLatinCharacters()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var message = new hMailServer.Message();
             message.AddRecipient("Test Recipient: Тест", account.Address);
             message.Subject = "Test Subject: Тест";
             message.Charset = "utf-8";
             message.Body = "Test body.";
             message.Save();

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             // Important:
             //   RFC 2047: http://www.faqs.org/rfcs/rfc2047.html
             //   The notation of RFC 822 is used, with the exception that white space
             //   characters MUST NOT appear between components of an 'encoded-word'.
             //
             //   Also, there should be a space separating the encoded word with the following
             //   non-encoded word.
             CustomAssert.IsTrue(messageText.Contains("To: \"=?utf-8?B?VGVzdCBSZWNpcGllbnQ6INCi0LXRgdGC?=\" <*****@*****.**>"));
        }
Ejemplo n.º 24
0
        public void TestMultipleLanguages()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string manyLanguages = "中文åäöん文t͡ɬɪŋ";

             var message = new hMailServer.Message();
             message.AddRecipient("test", account.Address);
             message.From = manyLanguages;
             message.FromAddress = account.Address;
             message.Subject = manyLanguages;
             message.Body = manyLanguages;
             message.Save();

             TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

             hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
             CustomAssert.AreEqual(manyLanguages, downloadedMessage.Subject);
             CustomAssert.AreEqual(manyLanguages, downloadedMessage.From);
             CustomAssert.AreEqual(manyLanguages + Environment.NewLine, downloadedMessage.Body);
        }
Ejemplo n.º 25
0
        public void TestAddMessage()
        {
            Application app = SingletonProvider <TestSetup> .Instance.GetApp();

            Utilities utilities = app.Utilities;

            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            // Create a new folder.
            IMAPFolder folder = account.IMAPFolders.get_ItemByName("INBOX");

            folder.Save();

            for (int i = 0; i < 3; i++)
            {
                hMailServer.Message message = folder.Messages.Add();
                message.set_Flag(eMessageFlag.eMFSeen, true);
                message.Save();

                POP3ClientSimulator.AssertMessageCount(account.Address, "test", ((i + 1) * 2) - 1);

                SMTPClientSimulator.StaticSend("*****@*****.**", account.Address, "Test", "Test");
                POP3ClientSimulator.AssertMessageCount(account.Address, "test", (i + 1) * 2);
            }

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 6);

            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("Inbox");

            string response = sim.Fetch("1:6 UID");

            string[] lines = Strings.Split(response, Environment.NewLine, -1, CompareMethod.Text);

            var uids = new List <string>();

            foreach (string line in lines)
            {
                int paraPos    = line.IndexOf("(");
                int paraEndPos = line.IndexOf(")");

                if (paraPos < 0 || paraEndPos < 0)
                {
                    continue;
                }

                string paraContent = line.Substring(paraPos + 1, paraEndPos - paraPos - 1);

                if (!uids.Contains(paraContent))
                {
                    uids.Add(paraContent);
                }
            }

            CustomAssert.AreEqual(6, uids.Count);

            // Make sure the UIDS are sorted properly by creating a copy, sort the copy
            // and then compare to original.
            var copy = new List <string>();

            copy.InsertRange(0, uids);
            copy.Sort();

            CustomAssert.AreEqual(copy, uids);
        }
Ejemplo n.º 26
0
        public void TestModifyBodyWithExistingAttachments()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string swedish = "abc.zip";
             string attachmentName = swedish + ".zip";
             string filename = Path.Combine(Path.GetTempPath(), attachmentName);
             File.WriteAllText(filename, swedish);

             var message = new hMailServer.Message();
             message.AddRecipient("test", account.Address);
             message.Attachments.Add(filename);
             message.From = swedish;
             message.FromAddress = account.Address;
             message.Subject = swedish;
             message.Body = "";
             message.Save();

             TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

             hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];

             downloadedMessage.Body = "Test";
             downloadedMessage.Save();
        }
Ejemplo n.º 27
0
        public void TestEncodingOfStringIncludingSpace()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var message = new hMailServer.Message();
             message.AddRecipient("test", account.Address);
             message.From = "Test";
             message.FromAddress = account.Address;
             message.Subject = "test mit encoding und deutc ü...";
             message.Body = "Test";
             message.Save();

             TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             string[] lines = messageText.Split(Environment.NewLine.ToCharArray());

             foreach (string line in lines)
             {
            if (line.ToLower().StartsWith("subject: "))
            {
               string subject = line.Substring("subject: ".Length + 1);

               // encoded part should not contain space.
               CustomAssert.IsFalse(subject.Contains(" "));

               break;
            }
             }
        }
Ejemplo n.º 28
0
        public void TestJapaneseAttachments()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string attachmentName = "本本本.zip";

             string filename = Path.Combine(Path.GetTempPath(), attachmentName);
             File.WriteAllText(filename, "tjena moss");

             var message = new hMailServer.Message();
             message.AddRecipient("test", account.Address);
             message.From = "Test";
             message.FromAddress = account.Address;
             message.Body = "hejsan";
             message.Attachments.Add(filename);
             message.Save();

             TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

             hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
             CustomAssert.AreNotEqual(0, downloadedMessage.Attachments.Count);
             Attachment attachment = downloadedMessage.Attachments[0];
             CustomAssert.AreEqual(attachmentName, attachment.Filename);
        }
Ejemplo n.º 29
0
        public void TestDanishSubject()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string croatianAndDanish = "ʒʥʨPiskefløde";

             var message = new hMailServer.Message();
             message.AddRecipient("test", account.Address);
             message.From = "Test";
             message.FromAddress = account.Address;
             message.Subject = croatianAndDanish;
             message.Body = "hej";
             message.Save();

             TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

             hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
             CustomAssert.AreEqual(croatianAndDanish, downloadedMessage.Subject);
        }
Ejemplo n.º 30
0
        public void TestEncodeWord()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string croatianAndDanish = "ʒʥʨPiskefløde";
             var message = new hMailServer.Message();
             message.Subject = croatianAndDanish;
             message.AddRecipient("", account.Address);
             message.Save();

             POP3Simulator.AssertMessageCount(account.Address, "test", 1);

             hMailServer.Message apiMessage = account.Messages[0];

             CustomAssert.AreEqual(apiMessage.Subject, croatianAndDanish);
             string fileContents = File.ReadAllText(apiMessage.Filename);
             CustomAssert.IsFalse(fileContents.Contains(croatianAndDanish));
        }
Ejemplo n.º 31
0
        public void TestMailCreationHTMLAndPlainTextReverse()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var message = new hMailServer.Message();
             message.AddRecipient("", account.Address);
             message.Body = "PlainTextBody";
             message.HTMLBody = "HTMLBody";
             message.Save();

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             int headerEnd = messageText.IndexOf("\r\n\r\n");
             string header = messageText.Substring(0, headerEnd);

             CustomAssert.IsTrue(header.Contains("Content-Type: multipart/alternative"));
             CustomAssert.IsFalse(header.Contains("Content-Transfer-Encoding: quoted-printable"));
             CustomAssert.IsTrue(messageText.Contains("PlainTextBody"));
             CustomAssert.IsTrue(messageText.Contains("HTMLBody"));
        }
Ejemplo n.º 32
0
        public void SingleLatinCharacterRecipient()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var message = new hMailServer.Message();
             message.AddRecipient("Ö", account.Address);
             message.Charset = "utf-8";
             message.Body = "Test body.";
             message.Save();

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             CustomAssert.IsTrue(messageText.Contains("To: \"=?utf-8?B?w5Y=?=\" <*****@*****.**>"));
        }
Ejemplo n.º 33
0
        public void TestSendMessage()
        {
            Account oAccount1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             // Send a message to the account.
             var oMessage = new hMailServer.Message();

             CustomAssert.AreEqual(0, oMessage.State);

             oMessage.AddRecipient("Martin", oAccount1.Address);
             oMessage.Body = "Välkommen till verkligheten";
             oMessage.Subject = "Hej";
             oMessage.Save();

             CustomAssert.AreEqual(1, oMessage.State);

             // Check that the message exists
             string message = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

             CustomAssert.IsNotEmpty(message);
             CustomAssert.Less(0, message.IndexOf("Hej"));
        }
Ejemplo n.º 34
0
        public void TestMailCreationPlainText()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var message = new hMailServer.Message();
             message.AddRecipient("", account.Address);
             message.Body = "Hello";
             message.Save();

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             int headerEnd = messageText.IndexOf("\r\n\r\n");
             string header = messageText.Substring(0, headerEnd);

             CustomAssert.IsTrue(header.Contains("Content-Type: text/plain; charset=\"utf-8\""));
             CustomAssert.IsTrue(header.Contains("Content-Transfer-Encoding: quoted-printable"));
             CustomAssert.IsTrue(messageText.Contains("Hello"));
        }
Ejemplo n.º 35
0
        public void TestMailCreationUnicodeAndAttachment()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string filename = Path.Combine(Path.GetTempPath(), "dummy.txt");
             File.WriteAllText(filename, "tjena moss");

             var message = new hMailServer.Message();
             message.AddRecipient("", account.Address);
             message.Charset = "utf-8";
             message.Attachments.Add(filename);
             // may cause an CustomAssert.
             message.HTMLBody = "Test of message... 日本語";
             message.Body = "Test of message... 日本語";
             message.Save();

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             int headerEnd = messageText.IndexOf("\r\n\r\n");
             string header = messageText.Substring(0, headerEnd);

             CustomAssert.IsTrue(header.Contains("Content-Type: multipart/mixed; charset=\"utf-8\""));

             File.Delete(filename);
        }
Ejemplo n.º 36
0
        public void TestMailCreationUnicodeBodyAndHtml()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var message = new hMailServer.Message();
             message.AddRecipient("", account.Address);
             message.Charset = "utf-8";
             message.Body = "Test of message... 日本語";
             message.HTMLBody = "Test of message... 日本語";
             message.Save();

             string messageText = POP3Simulator.AssertGetFirstMessageText(account.Address, "test");

             CustomAssert.IsTrue(messageText.Contains("Content-Type: text/html; charset=\"utf-8\""));
             CustomAssert.IsTrue(messageText.Contains("Content-Type: text/plain; charset=\"utf-8\""));
        }
Ejemplo n.º 37
0
        public void NonLatinCharactersInRecipientNameResultsInNoSpaces()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var message = new hMailServer.Message();
             message.AddRecipient("Tестов Тест Тестостеронович", account.Address);
             message.Subject = "Test";
             message.Charset = "utf-8";
             message.Body = "Test body.";
             message.Save();

             string messageText = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

             // Important:
             //   RFC 2047: http://www.faqs.org/rfcs/rfc2047.html
             //   The notation of RFC 822 is used, with the exception that white space
             //   characters MUST NOT appear between components of an 'encoded-word'.
             //
             //   Also, there should be a space separating the encoded word with the following
             //   non-encoded word.
             Assert.IsTrue(
            messageText.Contains(
               "To: \"=?utf-8?B?VNC10YHRgtC+0LIg0KLQtdGB0YIg0KLQtdGB0YLQvtGB0YLQtdGA0L7QvdC+?=\r\n =?utf-8?B?0LLQuNGH?=\" <*****@*****.**>"));
        }