示例#1
0
        public void TestEncodingOfStringIncludingSpace()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            hMailServer.Message 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();

            Utilities.AssertMessageExistsInFolder(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.
                    Assert.IsFalse(subject.Contains(" "));

                    break;
                }
            }
        }
示例#2
0
文件: API.cs 项目: radtek/hMailServer
        public void TestSaveMessageInExistingIMAPFolder()
        {
            hMailServer.Settings settings = SingletonProvider <Utilities> .Instance.GetApp().Settings;

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

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

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

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

            Assert.AreEqual(0, oMessage.State);

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

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

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

            Assert.IsNotEmpty(message);
            Assert.Less(0, message.IndexOf("Hej"));
        }
示例#3
0
        public void TestReplaceInvalidPathWithCorrectPath()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test message", "Test body");

            hMailServer.IMAPFolder folder = account.IMAPFolders.get_ItemByName("Inbox");
            Utilities.AssertMessageExistsInFolder(folder, 1);

            hMailServer.Message message = account.IMAPFolders.get_ItemByName("Inbox").Messages[0];

            string filename = message.Filename;

            // Now nothing should happen here.
            Assert.IsTrue(_application.Utilities.ImportMessageFromFile(filename, account.ID));
            Assert.IsTrue(File.Exists(filename));

            string sql = string.Format("update hm_messages set messagefilename = '{0}' where messageid = {1}", Utilities.Escape(message.Filename), message.ID);

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

            // Now the path should be replaced.
            Assert.IsTrue(_application.Utilities.ImportMessageFromFile(message.Filename, account.ID));

            // Now nothing should happen.
            Assert.IsTrue(_application.Utilities.ImportMessageFromFile(message.Filename, account.ID));
            Assert.IsTrue(File.Exists(message.Filename));

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

            Assert.IsTrue(content.Contains("Test message"));
        }
示例#4
0
        public void TestImportOfMessageInInvalidSubName()
        {
            string @messageText =
                "From: [email protected]\r\n" +
                "\r\n" +
                "Test\r\n";

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

            string domainPath  = Path.Combine(_application.Settings.Directories.DataDirectory, "test.com");
            string accountPath = Path.Combine(domainPath, "test");

            Directory.CreateDirectory(accountPath);

            string guid     = Guid.NewGuid().ToString();
            string guidPath = Path.Combine(accountPath, guid.Substring(1, 2));

            Directory.CreateDirectory(guidPath);

            string fileName = Path.Combine(guidPath, "§§§§.eml");

            File.WriteAllText(fileName, messageText);

            Assert.IsTrue(_application.Utilities.ImportMessageFromFile(fileName, account.ID));

            hMailServer.Message message = _domain.Accounts[0].IMAPFolders.get_ItemByName("Inbox").Messages[0];
            Assert.IsFalse(fileName.Contains("$$$$.eml"));
        }
示例#5
0
        public void TestReplaceFullPathInPublicFolderWithPartialPath()
        {
            hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp();

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

            hMailServer.IMAPFolders publicFolders = _settings.PublicFolders;
            hMailServer.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}", Utilities.Escape(fileName), message.ID);

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

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

            _application.Reinitialize();

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

            Assert.AreNotEqual(fileName, newMessgaeFilename);
            Assert.IsTrue(File.Exists(newMessgaeFilename));
        }
        public void TestDeletionOfMessageInDeletedFolder()
        {
            hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp();

            string deletedMessageText = _settings.ServerMessages.get_ItemByName("MESSAGE_FILE_MISSING").Text;

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

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody");
            hMailServer.IMAPFolder inbox = account.IMAPFolders.get_ItemByName("Inbox");;
            Utilities.AssertMessageExistsInFolder(inbox, 1);

            hMailServer.Messages messages = inbox.Messages;

            hMailServer.Message message = messages[0];
            DirectoryInfo       dir     = new DirectoryInfo(Path.GetFullPath(message.Filename));
            DirectoryInfo       parent  = dir.Parent.Parent.Parent;

            parent.Delete(true);

            DateTime timeBeforeDelete = DateTime.Now;

            messages.DeleteByDBID(message.ID);

            TimeSpan executionTime = DateTime.Now - timeBeforeDelete;

            Assert.Greater(1500, executionTime.TotalMilliseconds);
        }
        public void TestRetrievalOfMessageInDeletedFolder()
        {
            hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp();

            string deletedMessageText = _settings.ServerMessages.get_ItemByName("MESSAGE_FILE_MISSING").Text;

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

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody");

            hMailServer.IMAPFolder inbox = account.IMAPFolders.get_ItemByName("Inbox");;

            Utilities.AssertMessageExistsInFolder(inbox, 1);

            hMailServer.Message message = inbox.Messages[0];

            DirectoryInfo dir    = new DirectoryInfo(Path.GetFullPath(message.Filename));
            DirectoryInfo parent = dir.Parent.Parent.Parent;

            parent.Delete(true);

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

            Assert.IsTrue(text.Contains(deletedMessageText.Replace("%MACRO_FILE%", message.Filename)));
            Utilities.AssertReportedError();
        }
示例#8
0
        public void TestRenameAccountOrDomainWithMessagesWithFullPath()
        {
            var account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test message", "Test body");

            hMailServer.IMAPFolder folder = account.IMAPFolders.get_ItemByName("Inbox");
            Utilities.AssertMessageExistsInFolder(folder, 1);
            hMailServer.Message message = account.IMAPFolders.get_ItemByName("Inbox").Messages[0];

            // Move the message file to another folder.
            string domainPath  = Path.Combine(_application.Settings.Directories.DataDirectory, _domain.Name);
            string accountPath = Path.Combine(domainPath, "test");
            string fileName    = Path.Combine(accountPath, "randomMail.eml");

            File.Move(message.Filename, fileName);

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

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

            // Now try to change the name of the domain or account. Should fail.
            account.Address = "*****@*****.**";
            bool thrown = false;

            try
            {
                account.Save();
            }
            catch (Exception)
            {
                thrown = true;
            }

            Assert.IsTrue(thrown);

            // Saving account is OK, unless its address is changed.
            account.Address = "*****@*****.**";
            account.Save();

            thrown = false;

            _domain.Name = "example.com";

            try
            {
                _domain.Save();
            }
            catch (Exception)
            {
                thrown = true;
            }

            Assert.IsTrue(thrown);

            // Saving domain is OK, unless its address is changed.
            _domain.Name = "test.com";
            _domain.Save();
        }
示例#9
0
        public void TestSwedishAndChineseCombination()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

            File.WriteAllText(filename, swedishAndChinese);

            hMailServer.Message 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();

            Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

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

            Assert.AreEqual(swedishAndChinese + Environment.NewLine, downloadedMessage.Body);
        }
示例#10
0
        public void TestJapaneseAttachments()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string attachmentName = "本本本.zip";

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

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

            hMailServer.Message 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();

            Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

            hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
            Assert.AreNotEqual(0, downloadedMessage.Attachments.Count);
            hMailServer.Attachment attachment = downloadedMessage.Attachments[0];
            Assert.AreEqual(attachmentName, attachment.Filename);
        }
示例#11
0
        public void TestMailCreationUnicodeAndAttachment()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

            hMailServer.Message 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 = POP3Simulator.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);
        }
示例#12
0
        public void TestModifyBodyWithExistingAttachments()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

            File.WriteAllText(filename, swedish);


            hMailServer.Message 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();

            Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

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

            downloadedMessage.Body = "Test";
            downloadedMessage.Save();
        }
示例#13
0
        public void TestAddBodyAfterAttachment()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

            hMailServer.Message 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);

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

            File.Delete(filename);
        }
示例#14
0
        public void TestBodyStructureWithNonLatinCharacter()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string attachmentName = "本本本.zip";

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

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

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

            Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

            IMAPSimulator oSimulator = new IMAPSimulator();

            oSimulator.ConnectAndLogon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string result = oSimulator.Fetch("1 BODYSTRUCTURE");

            oSimulator.Disconnect();

            // utf-8 representation of 本本本.zip:
            Assert.IsTrue(result.Contains("=?utf-8?B?5pys5pys5pys?=.zip"));
        }
示例#15
0
        public void TestUnderscoreInBody()
        {
            string body = "underscore_in_body\r\n";

            hMailServer.Message message = new hMailServer.Message();
            message.Body = body;
            Assert.AreEqual(body, message.Body);
        }
示例#16
0
        public void SwedishCharactersInBody()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

            string body = message.Body;

            Assert.IsTrue(body.Contains("Test ÅÄÖ Test."));
        }
示例#17
0
        private void SendMessage(string subject, string body, string to, string cc)
        {
            hMailServer.Message message = new hMailServer.Message();

            message.Charset = "UTF-8";
            message.AddRecipient("test", "meta'*****@*****.**");
            message.From        = "Test";
            message.FromAddress = "meta'*****@*****.**";
            message.Subject     = subject;
            message.set_HeaderValue("To", to);
            message.set_HeaderValue("cc", cc);
            message.Body = body;
            message.Save();
        }
示例#18
0
        public void TestAttachmentRemoval()
        {
            SingletonProvider <Utilities> .Instance.GetApp().Settings.AntiVirus.EnableAttachmentBlocking = true;

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

            // Send a message to the account.
            string messageText = @"Date: Thu, 03 Jul 2008 22:01:53 +0200\r\n" +
                                 "From: Test <*****@*****.**>\r\n" +
                                 "MIME-Version: 1.0\r\n" +
                                 "To: [email protected]\r\n" +
                                 "Subject: test\r\n" +
                                 "Content-Type: multipart/mixed;\r\n" +
                                 "  boundary=\"------------050908050500020808050006\"\r\n" +
                                 "\r\n" +
                                 "This is a multi-part message in MIME format.\r\n" +
                                 "--------------050908050500020808050006\r\n" +
                                 "Content-Type: text/plain; charset=ISO-8859-1; format=flowed\r\n" +
                                 "Content-Transfer-Encoding: 7bit\r\n" +
                                 "\r\n" +
                                 "Test\r\n" +
                                 "\r\n" +
                                 "--------------050908050500020808050006\r\n" +
                                 "Content-Type: text/plain;\r\n" +
                                 " name=\"AUTOEXEC.BAT\"\r\n" +
                                 "Content-Transfer-Encoding: base64\r\n" +
                                 "Content-Disposition: inline;\r\n" +
                                 " filename=\"AUTOEXEC.BAT\"\r\n" +
                                 "\r\n" +
                                 "\r\n" +
                                 "--------------050908050500020808050006--\r\n";

            SMTPClientSimulator.StaticSendRaw("*****@*****.**", "*****@*****.**", messageText);

            hMailServer.Message message = Utilities.AssertRetrieveFirstMessage(account1.IMAPFolders.get_ItemByName("INBOX"));
            Assert.AreEqual(1, message.Attachments.Count);
            Assert.AreEqual("AUTOEXEC.BAT.txt", message.Attachments[0].Filename);

            string tempFile = System.IO.Path.GetTempFileName();

            message.Attachments[0].SaveAs(tempFile);
            string contents = System.IO.File.ReadAllText(tempFile);

            string removedMessage = SingletonProvider <Utilities> .Instance.GetApp().Settings.ServerMessages.get_ItemByName("ATTACHMENT_REMOVED").Text;

            removedMessage = removedMessage.Replace("%MACRO_FILE%", message.Attachments[0].Filename.Substring(0, message.Attachments[0].Filename.Length - 4));

            Assert.IsTrue(contents.Contains(removedMessage));
            System.IO.File.Delete(tempFile);
        }
示例#19
0
        public void SingleLatinCharacterRecipient()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            hMailServer.Message 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");

            Assert.IsTrue(messageText.Contains("To: \"=?utf-8?B?w5Y=?=\" <*****@*****.**>"));
        }
示例#20
0
        public void TestAttachmentEncoding()
        {
            var testFiles = GetTestFiles();

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

            foreach (string testFile in testFiles)
            {
                Trace.WriteLine(testFile);


                string fileHash = Utilities.GetFileHash(testFile);

                MailMessage mail = new MailMessage();
                mail.From = new System.Net.Mail.MailAddress("*****@*****.**");
                mail.To.Add("*****@*****.**");
                mail.Subject = "Test";
                mail.Attachments.Add(new Attachment(testFile));

                SmtpClient client = new SmtpClient("localhost", 25);
                client.Send(mail);

                POP3Simulator.AssertMessageCount("*****@*****.**", "test", 1);

                POP3Simulator sim = new POP3Simulator();
                sim.ConnectAndLogon("*****@*****.**", "test");
                string fileContent = sim.RETR(1);
                sim.DELE(1);
                sim.QUIT();


                hMailServer.Message message = new hMailServer.Message();

                try
                {
                    File.WriteAllText(message.Filename, fileContent);
                    message.RefreshContent();

                    message.Attachments[0].SaveAs(message.Filename);
                    string fileHashAfter = Utilities.GetFileHash(message.Filename);

                    Assert.AreEqual(fileHash, fileHashAfter);
                }
                finally
                {
                    File.Delete(message.Filename);
                }
            }
        }
示例#21
0
        public void TestMailCreationUnicodeBodyAndHtml()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            hMailServer.Message 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");

            Assert.IsTrue(messageText.Contains("Content-Type: text/html; charset=\"utf-8\""));
            Assert.IsTrue(messageText.Contains("Content-Type: text/plain; charset=\"utf-8\""));
        }
示例#22
0
文件: API.cs 项目: radtek/hMailServer
        public void TestRetrieveMessageID()
        {
            hMailServer.Application app = SingletonProvider <Utilities> .Instance.GetApp();

            hMailServer.Utilities utilities = app.Utilities;

            // Add an account and send a message to it.
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody");
            POP3Simulator.AssertMessageCount(account.Address, "test", 1);

            hMailServer.Message message = account.IMAPFolders.get_ItemByName("INBOX").Messages[0];

            Assert.AreEqual(message.ID, utilities.RetrieveMessageID(message.Filename));
            Assert.AreEqual(0, utilities.RetrieveMessageID(@"C:\some\nonexistant\file"));
        }
示例#23
0
        public void TestMailCreationHTML()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

            string messageText = POP3Simulator.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/html; charset=\"utf-8\""));
            Assert.IsTrue(header.Contains("Content-Transfer-Encoding: quoted-printable"));
            Assert.IsTrue(messageText.Contains("Hello"));
        }
示例#24
0
        public void NonLatinCharactersInRecipientNameResultsInBoxesInThunderbird()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            hMailServer.Message 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=?=\" <*****@*****.**>";


            Assert.IsTrue(messageText.Contains(match));
        }
示例#25
0
        public void TestDanishSubject()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

            Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

            hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
            Assert.AreEqual(croatianAndDanish, downloadedMessage.Subject);
        }
示例#26
0
        public void NonLatinCharactersInRecipientNameResultsInBoxesInThunderbird()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.Message 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=?=\" <*****@*****.**>";

             Assert.IsTrue(messageText.Contains(match));
        }
示例#27
0
        public void TestAddTextDuringSendingAttachment()
        {
            hMailServer.Account oAccount1 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            // Send a message to the account.
            hMailServer.Message oMessage = new hMailServer.Message();
            Assert.AreEqual(0, oMessage.State);

            hMailServer.Scripting scripting = SingletonProvider <Utilities> .Instance.GetApp().Settings.Scripting;

            string signature = "MySignature";

            string script = "Sub OnAcceptMessage(oClient, oMessage) " + Environment.NewLine +
                            " oMessage.Body = oMessage.Body & \"" + signature + "\" " + Environment.NewLine +
                            " oMessage.Save() " + Environment.NewLine +
                            "End Sub" + Environment.NewLine + Environment.NewLine;

            System.IO.File.WriteAllText(scripting.CurrentScriptFile, script);
            scripting.Enabled = true;
            scripting.Reload();

            Assembly a = Assembly.GetExecutingAssembly();

            MailMessage mail = new MailMessage();

            mail.From = new System.Net.Mail.MailAddress("*****@*****.**");
            mail.To.Add("*****@*****.**");
            mail.Subject         = "Automatiskt servertest";
            mail.Body            = "Detta är ett automatiskt test av epostservern.";
            mail.BodyEncoding    = System.Text.Encoding.GetEncoding(1252);
            mail.SubjectEncoding = System.Text.Encoding.GetEncoding(1252);
            mail.Attachments.Add(new Attachment(a.Location));
            SmtpClient oClient = new SmtpClient("localhost", 25);

            oClient.Send(mail);

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

            Assert.IsNotEmpty(message, message);
            Assert.IsTrue(message.Contains(signature), message);
        }
示例#28
0
        public void TestEncodeWord()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

            hMailServer.Message 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];

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

            Assert.IsFalse(fileContents.Contains(croatianAndDanish));
        }
示例#29
0
        public void TestMailCreationHTMLAndPlainTextReverse()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            hMailServer.Message 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);

            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"));
        }
示例#30
0
        public void TestMultipleLanguages()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

            Utilities.AssertMessageExistsInFolder(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);
        }
示例#31
0
        public void TestReplaceFullPathWithPartialPath()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test message", "Test body");

            hMailServer.IMAPFolder folder = account.IMAPFolders.get_ItemByName("Inbox");
            Utilities.AssertMessageExistsInFolder(folder, 1);

            hMailServer.Message message = account.IMAPFolders.get_ItemByName("Inbox").Messages[0];

            // Now nothing should happen.
            Assert.IsTrue(_application.Utilities.ImportMessageFromFile(message.Filename, account.ID));

            // Move the message file to another folder.
            string domainPath  = Path.Combine(_application.Settings.Directories.DataDirectory, _domain.Name);
            string accountPath = Path.Combine(domainPath, "test");
            string fileName    = Path.Combine(accountPath, "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}", Utilities.Escape(fileName), message.ID);

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

            Assert.IsTrue(File.Exists(fileName));
            // Now the file should be moved to the correct path.
            Assert.IsTrue(_application.Utilities.ImportMessageFromFile(fileName, account.ID));

            Assert.IsFalse(File.Exists(fileName));

            // Now nothing should happen because the file is no longer there.
            Assert.IsFalse(_application.Utilities.ImportMessageFromFile(fileName, account.ID));

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

            Assert.IsTrue(content.Contains("Test message"));
        }
示例#32
0
        public void TestAddTextDuringSending()
        {
            hMailServer.Account oAccount1 = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             // Send a message to the account.
             hMailServer.Message oMessage = new hMailServer.Message();
             Assert.AreEqual(0, oMessage.State);

             hMailServer.Scripting scripting = SingletonProvider<Utilities>.Instance.GetApp().Settings.Scripting;

             string signature = "MySignature";

             string script = "Sub OnAcceptMessage(oClient, oMessage) " + Environment.NewLine +
                               " Call EventLog.Write(\"Subject:\" +oMessage.Subject)" + Environment.NewLine +
                               " Call EventLog.Write(\"Date:\" +oMessage.Date)" + Environment.NewLine +
                               " Call EventLog.Write(\"Body:\" +oMessage.Body)" + Environment.NewLine +
                               " oMessage.Body = oMessage.Body & \"" + signature + "\" " + Environment.NewLine +
                               " oMessage.Save() " + Environment.NewLine +
                          "End Sub"  + Environment.NewLine +  Environment.NewLine;

             System.IO.File.WriteAllText(scripting.CurrentScriptFile, script);
             scripting.Enabled = true;
             scripting.Reload();
             Assert.IsEmpty(scripting.CheckSyntax());

             // Send the message.
             List<string> recipients = new List<string>();
             recipients.Add("*****@*****.**");
             SMTPClientSimulator.StaticSend("*****@*****.**", recipients, "Hej", "Välkommen till verkligheten");

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

             Assert.IsNotEmpty(message);
             Assert.IsTrue(message.Contains(signature));
             Assert.Less(0, message.IndexOf("Hej"));
        }
示例#33
0
        public void TestAddBodyAfterAttachment()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

             hMailServer.Message 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);

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

             File.Delete(filename);
        }
示例#34
0
        public void TestEncodingOfStringIncludingSpace()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.Message 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();

             Utilities.AssertMessageExistsInFolder(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.
               Assert.IsFalse(subject.Contains(" "));

               break;
            }

             }
        }
示例#35
0
        public void TestEncodeWord()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              string croatianAndDanish = "ʒʥʨPiskefløde";
              hMailServer.Message 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];

              Assert.AreEqual(apiMessage.Subject, croatianAndDanish);
              string fileContents = File.ReadAllText(apiMessage.Filename);
              Assert.IsFalse(fileContents.Contains(croatianAndDanish));
        }
示例#36
0
        public void TestDanishSubject()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

             Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

             hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
             Assert.AreEqual(croatianAndDanish, downloadedMessage.Subject);
        }
示例#37
0
        public void TestSwedishAndChineseCombination()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

             hMailServer.Message 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();

             Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

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

             Assert.AreEqual(swedishAndChinese + Environment.NewLine, downloadedMessage.Body);
        }
示例#38
0
        public void TestMostlyLatinCharacters()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.Message 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.
             Assert.IsTrue(messageText.Contains("To: \"=?utf-8?B?VGVzdCBSZWNpcGllbnQ6INCi0LXRgdGC?=\" <*****@*****.**>"));
        }
示例#39
0
        public void SingleLatinCharacterRecipient()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.Message 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");

             Assert.IsTrue(messageText.Contains("To: \"=?utf-8?B?w5Y=?=\" <*****@*****.**>"));
        }
示例#40
0
 internal Message()
 {
     _object = new hMailServer.Message();
 }
示例#41
0
        public void TestMailCreationUnicodeAndAttachment()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

             hMailServer.Message 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 = POP3Simulator.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);
        }
示例#42
0
        public void TestMailCreationUnicodeBodyAndHtml()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.Message 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");

             Assert.IsTrue(messageText.Contains("Content-Type: text/html; charset=\"utf-8\""));
             Assert.IsTrue(messageText.Contains("Content-Type: text/plain; charset=\"utf-8\""));
        }
示例#43
0
        public void TestJapaneseAttachments()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string attachmentName = "本本本.zip";

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

             hMailServer.Message 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();

             Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

             hMailServer.Message downloadedMessage = account.IMAPFolders[0].Messages[0];
             Assert.AreNotEqual(0, downloadedMessage.Attachments.Count);
             hMailServer.Attachment attachment = downloadedMessage.Attachments[0];
             Assert.AreEqual(attachmentName, attachment.Filename);
        }
示例#44
0
        public void TestMailCreationHTMLAndPlainTextReverse()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.Message 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);

             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"));
        }
示例#45
0
        public void TestModifyBodyWithExistingAttachments()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

             hMailServer.Message 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();

             Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

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

             downloadedMessage.Body = "Test";
             downloadedMessage.Save();
        }
        private void SendMessage(string subject, string body, string to, string cc)
        {
            hMailServer.Message message = new hMailServer.Message();

             message.Charset = "UTF-8";
             message.AddRecipient("test", "meta'*****@*****.**");
             message.From = "Test";
             message.FromAddress = "meta'*****@*****.**";
             message.Subject = subject;
             message.set_HeaderValue("To", to);
             message.set_HeaderValue("cc", cc);
             message.Body = body;
             message.Save();
        }
示例#47
0
        public void TestMultipleLanguages()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

             Utilities.AssertMessageExistsInFolder(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);
        }
示例#48
0
        public void SwedishCharactersInBody()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

              string body = message.Body;
              Assert.IsTrue(body.Contains("Test ÅÄÖ Test."));
        }
示例#49
0
        public void TestUnderscoreInBody()
        {
            string body = "underscore_in_body\r\n";

              hMailServer.Message message = new hMailServer.Message();
              message.Body = body;
              Assert.AreEqual(body, message.Body);
        }
示例#50
0
        public void TestAddTextDuringSendingAttachment()
        {
            hMailServer.Account oAccount1 = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             // Send a message to the account.
             hMailServer.Message oMessage = new hMailServer.Message();
             Assert.AreEqual(0, oMessage.State);

             hMailServer.Scripting scripting = SingletonProvider<Utilities>.Instance.GetApp().Settings.Scripting;

             string signature = "MySignature";

             string script = "Sub OnAcceptMessage(oClient, oMessage) " + Environment.NewLine +
                               " oMessage.Body = oMessage.Body & \"" + signature + "\" " + Environment.NewLine +
                               " oMessage.Save() " + Environment.NewLine +
                          "End Sub" + Environment.NewLine + Environment.NewLine;

             System.IO.File.WriteAllText(scripting.CurrentScriptFile, script);
             scripting.Enabled = true;
             scripting.Reload();

             Assembly a = Assembly.GetExecutingAssembly();

             MailMessage mail = new MailMessage();
             mail.From = new System.Net.Mail.MailAddress("*****@*****.**");
             mail.To.Add("*****@*****.**");
             mail.Subject = "Automatiskt servertest";
             mail.Body = "Detta är ett automatiskt test av epostservern.";
             mail.BodyEncoding = System.Text.Encoding.GetEncoding(1252);
             mail.SubjectEncoding = System.Text.Encoding.GetEncoding(1252);
             mail.Attachments.Add(new Attachment(a.Location));
             SmtpClient oClient = new SmtpClient("localhost", 25);
             oClient.Send(mail);

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

             Assert.IsNotEmpty(message, message);
             Assert.IsTrue(message.Contains(signature), message);
        }
示例#51
0
        public void TestMailCreationPlainText()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.Message 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);

             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"));
        }
示例#52
0
 public MessageFlag(hMailServer.Message o)
 {
     _object = o;
 }
示例#53
0
 internal Message(hMailServer.Message o)
 {
     _object = o;
 }
示例#54
0
 public MessageHeaderValue(hMailServer.Message o)
 {
     _object = o;
 }