public void TestAppend() { using (var session = SelectMailbox()) { // APPEND transaction server.EnqueueResponse("+ OK continue\r\n"); server.EnqueueResponse("0004 OK APPEND completed\r\n"); var message = new ImapAppendMessage(Encoding.ASCII.GetBytes("MIME-Version: 1.0\r\n\r\ntest message"), new ImapMessageFlagList(ImapMessageFlag.Seen)); Assert.IsTrue((bool)session.Append(message, "INBOX")); Assert.AreEqual("0004 APPEND \"INBOX\" (\\Seen) {33}\r\n" + "MIME-Version: 1.0\r\n" + "\r\n" + "test message\r\n", server.DequeueAll()); CloseMailbox(session); } }
private void AppendMultiple(bool respondAppendUid) { using (var session = SelectMailbox("MULTIAPPEND")) { // APPEND transaction server.EnqueueResponse("+ Ready for literal data\r\n"); server.EnqueueResponse(string.Empty); server.EnqueueResponse("+ Ready for literal data\r\n"); server.EnqueueResponse(string.Empty); if (respondAppendUid) server.EnqueueResponse("0004 OK [APPENDUID 38505 3955:3956] APPEND completed\r\n"); else server.EnqueueResponse("0004 OK APPEND completed\r\n"); var messageBody1 = @"Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) From: Fred Foobar <*****@*****.**> Subject: afternoon meeting To: [email protected] Message-Id: <*****@*****.**> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Hello Joe, do you think we can meet at 3:30 tomorrow? ".Replace("\r\n", "\n").Replace("\n", "\r\n"); var messageBody2 = @"Date: Mon, 7 Feb 1994 22:43:04 -0800 (PST) From: Joe Mooch <*****@*****.**> Subject: Re: afternoon meeting To: [email protected] Message-Id: <*****@*****.**> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII 3:30 is fine with me. ".Replace("\r\n", "\n").Replace("\n", "\r\n"); var message1 = new ImapAppendMessage(Encoding.ASCII.GetBytes(messageBody1), new ImapMessageFlagList(ImapMessageFlag.Seen)); var message2 = new ImapAppendMessage(Encoding.ASCII.GetBytes(messageBody2), new DateTimeOffset(new DateTime(1994, 2, 7, 22, 43, 04), new TimeSpan(-8, 0, 0)), new ImapMessageFlagList(ImapMessageFlag.Seen)); ImapAppendedUidSet appended; Assert.IsTrue((bool)session.AppendMultiple(new[] {message1, message2}, "saved-messages", out appended)); var expected = string.Format("0004 APPEND \"saved-messages\" (\\Seen) {{{0}}}\r\n", Encoding.ASCII.GetByteCount(messageBody1)) + messageBody1 + string.Format(" (\\Seen) \"07-Feb-1994 22:43:04 -0800\" {{{0}}}\r\n", Encoding.ASCII.GetByteCount(messageBody2)) + messageBody2 + "\r\n"; Assert.AreEqual(expected, server.DequeueAll()); if (respondAppendUid) { Assert.IsNotNull(appended); Assert.AreEqual(38505L, appended.UidValidity); var appendedUids = appended.ToArray(); Assert.AreEqual(2, appendedUids.Length); Assert.AreEqual(3955L, appendedUids[0]); Assert.AreEqual(3956L, appendedUids[1]); } CloseMailbox(session); } }
public void TestAppendWithAppendUidResponseCode() { using (var session = SelectMailbox()) { // APPEND transaction server.EnqueueResponse("+ OK continue\r\n"); server.EnqueueResponse("0004 OK [APPENDUID 38505 3955] APPEND completed\r\n"); var message = new ImapAppendMessage(Encoding.ASCII.GetBytes("MIME-Version: 1.0\r\n\r\ntest message"), new ImapMessageFlagList(ImapMessageFlag.Seen)); ImapAppendedUidSet appended; Assert.IsTrue((bool)session.Append(message, "INBOX", out appended)); Assert.AreEqual("0004 APPEND \"INBOX\" (\\Seen) {33}\r\n" + "MIME-Version: 1.0\r\n" + "\r\n" + "test message\r\n", server.DequeueAll()); Assert.IsNotNull(appended); Assert.AreEqual(38505L, appended.UidValidity); Assert.AreEqual(3955L, appended.ToNumber()); Assert.AreEqual("3955", appended.ToString()); CloseMailbox(session); } }
public void TestAppendTryCreateNoReferralResponseCode() { using (var session = SelectMailbox()) { // APPEND transaction server.EnqueueResponse("0004 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/SHARED/FOO] Remote mailbox. Try SERVER2.\r\n"); var message = new ImapAppendMessage(Encoding.ASCII.GetBytes("MIME-Version: 1.0\r\n\r\ntest message"), new ImapMessageFlagList(new[] {"$label2"}, ImapMessageFlag.Draft)); ImapMailbox created; Assert.IsFalse((bool)session.Append(message, "SHARED/FOO", out created)); Assert.IsNull(created); Assert.AreEqual("0004 APPEND \"SHARED/FOO\" (\\Draft $label2) {33}\r\n", server.DequeueRequest()); } }
public void TestAppendTryCreate() { using (var session = SelectMailbox()) { // APPEND transaction server.EnqueueResponse("0004 NO [TRYCREATE] Mailbox doesn't exist: INBOX.appendto\r\n"); server.EnqueueResponse("0005 OK CREATE completed\r\n"); server.EnqueueResponse("+ OK continue\r\n"); server.EnqueueResponse("0006 OK APPEND completed\r\n"); var message = new ImapAppendMessage(Encoding.ASCII.GetBytes("MIME-Version: 1.0\r\n\r\ntest message"), new ImapMessageFlagList(new[] {"$label2"}, ImapMessageFlag.Draft)); ImapMailbox created; Assert.IsTrue((bool)session.Append(message, "INBOX.appendto", out created)); Assert.AreEqual("INBOX.appendto", created.Name); Assert.AreEqual(new Uri(uri, "./INBOX.appendto"), created.Url); Assert.IsNotNull(created.Flags); Assert.IsNotNull(created.ApplicableFlags); Assert.IsNotNull(created.PermanentFlags); Assert.AreEqual("0004 APPEND \"INBOX.appendto\" (\\Draft $label2) {33}\r\n", server.DequeueRequest()); Assert.AreEqual("0005 CREATE \"INBOX.appendto\"\r\n", server.DequeueRequest()); Assert.AreEqual("0006 APPEND \"INBOX.appendto\" (\\Draft $label2) {33}\r\n" + "MIME-Version: 1.0\r\n" + "\r\n" + "test message\r\n", server.DequeueAll()); CloseMailbox(session, "0007"); } }
public void TestAppendMultipleWithNonSyncedLiteral() { using (var session = SelectMailbox("MULTIAPPEND", "LITERAL+")) { // APPEND transaction server.EnqueueResponse("0004 OK APPEND completed\r\n"); var message1 = new ImapAppendMessage(Encoding.ASCII.GetBytes("MIME-Version: 1.0\r\n\r\ntest message1")); var message2 = new ImapAppendMessage(Encoding.ASCII.GetBytes("MIME-Version: 1.0\r\n\r\ntest message2")); Assert.IsTrue((bool)session.AppendMultiple(new[] {message1, message2}, "saved-messages")); Assert.AreEqual("0004 APPEND \"saved-messages\" {34+}\r\n" + "MIME-Version: 1.0\r\n" + "\r\n" + "test message1 {34+}\r\n" + "MIME-Version: 1.0\r\n" + "\r\n" + "test message2\r\n", server.DequeueAll()); CloseMailbox(session); } }
public void TestAppendDontTryCreate() { using (var session = SelectMailbox()) { // APPEND transaction server.EnqueueResponse("0004 NO [TRYCREATE] Mailbox doesn't exist: INBOX.appendto\r\n"); var message = new ImapAppendMessage(Encoding.ASCII.GetBytes("MIME-Version: 1.0\r\n\r\ntest message"), new DateTimeOffset(2008, 2, 25, 15, 1, 12, new TimeSpan(+9, 0, 0))); var internalDate = "\"25-Feb-2008 15:01:12 +0900\""; Assert.IsFalse((bool)session.Append(message, "INBOX.appendto")); Assert.AreEqual("0004 APPEND \"INBOX.appendto\" " + internalDate + " {33}\r\n", server.DequeueRequest()); CloseMailbox(session); } }