Example #1
0
        private ImapAppendMessage(Stream messageStream, DateTimeOffset? internalDate, IImapMessageFlagSet flags)
        {
            if (messageStream == null)
            throw new ArgumentNullException("messageStream");

              this.messageStream = messageStream;
              this.InternalDate = internalDate;
              this.Flags = (flags == null) ? new ImapMessageFlagList() : new ImapMessageFlagList(flags);
        }
Example #2
0
 public ImapUpdatedStatus(IImapMessageFlagSet applicableFlags,
                      IImapMessageDynamicAttribute messageAttribute,
                      long? expunge,
                      long? exists,
                      long? recent)
 {
     this.applicableFlags = applicableFlags;
       this.messageAttribute = messageAttribute;
       this.expunge = expunge;
       this.exists = exists;
       this.recent = recent;
 }
Example #3
0
 public ImapAppendMessage(Stream messageStream, IImapMessageFlagSet flags)
     : this(messageStream, null, flags)
 {
 }
Example #4
0
 public ImapAppendMessage(byte[] message, DateTimeOffset internalDate, IImapMessageFlagSet flags)
     : this(new MemoryStream(message, false), (DateTimeOffset?)internalDate, flags)
 {
 }
Example #5
0
 public ImapAppendMessage(byte[] message, IImapMessageFlagSet flags)
     : this(new MemoryStream(message, false), null, flags)
 {
 }
Example #6
0
        private void WriteMessageCore(long? length, DateTimeOffset? internalDate, IImapMessageFlagSet flags, Action<Stream> write)
        {
            if (write == null)
            throw new ArgumentNullException("write");
              if (length.HasValue && length.Value < 0L)
            throw new ArgumentOutOfRangeException("length", length.Value, "must be zero or positive number");

              using (var stream = new ImapAppendMessageBodyStream()) {
            if (length.HasValue)
              stream.SetLength(length.Value);

            try {
              var asyncResult = client.Session.BeginAppend(stream, internalDate, flags, mailbox);

              if (!asyncResult.IsCompleted) {
            write(stream);

            stream.UpdateLength();
              }

              ProcessResult(client.Session.EndAppend(asyncResult));
            }
            finally {
              stream.InternalDispose();
            }
              }
        }
Example #7
0
 public void WriteMessage(long length, DateTimeOffset internalDate, IImapMessageFlagSet flags, Action<Stream> write)
 {
     WriteMessageCore(length, internalDate, flags, write);
 }
Example #8
0
 public void WriteMessage(long length, IImapMessageFlagSet flags, Action<Stream> write)
 {
     WriteMessageCore(length, null, flags, write);
 }
        /// <summary>begins to send APPEND command</summary>
        /// <remarks>valid in authenticated state</remarks>
        public IAsyncResult BeginAppend(Stream messageBodyStream, DateTimeOffset? internalDate, IImapMessageFlagSet flags, string mailboxName)
        {
            RejectNonAuthenticatedState();
              RejectTransactionProceeding();

              if (messageBodyStream == null)
            throw new ArgumentNullException("messageBodyStream");

              RejectInvalidMailboxNameArgument(mailboxName);

              // append message
              var messagesToUpload = new List<ImapString>(1);

              // flag-list
              if (flags != null && 0 < flags.Count)
            messagesToUpload.Add(new ImapParenthesizedString(flags.GetNonApplicableFlagsRemoved().ToArray()));

              // date-time
              if (internalDate.HasValue)
            messagesToUpload.Add(ImapDateTimeFormat.ToDateTimeString(internalDate.Value));

              // append-data
              messagesToUpload.Add(new ImapLiteralStream(messageBodyStream, ImapLiteralOptions.Synchronizing));

              AppendTransaction t = null;

              try {
            t = new AppendTransaction(connection, false);

            // mailbox name
            t.RequestArguments["mailbox name"] = new ImapMailboxNameString(mailboxName);

            // messages to upload
            t.RequestArguments["messages to upload"] = new ImapStringList(messagesToUpload.ToArray());

            var asyncResult = BeginProcessTransaction(t, handlesIncapableAsException);

            // wait for started (or completed)
            for (;;) {
              if (asyncResult.IsCompleted)
            break;
              else if (IsTransactionProceeding)
            break;
              else
            System.Threading.Thread.Sleep(10);
            }

            return asyncResult;
              }
              catch {
            if (t != null) {
              t.Dispose();
              t = null;
            }

            throw;
              }
        }
Example #10
0
 public void AppendMessage(Stream stream, DateTimeOffset internalDate, IImapMessageFlagSet flags)
 {
     AppendMessage(new ImapAppendMessage(stream, internalDate, flags));
 }
Example #11
0
 public void AppendMessage(Stream stream, IImapMessageFlagSet flags)
 {
     AppendMessage(new ImapAppendMessage(stream, flags));
 }
Example #12
0
 public void AddFlags(IImapMessageFlagSet flagsAndKeywords)
 {
     Store(ImapStoreDataItem.AddFlags(flagsAndKeywords));
 }
Example #13
0
        // common construction method
        private static ImapStoreDataItem FlagsCommon(ImapString itemName, IImapMessageFlagSet flags)
        {
            if (flags == null)
            throw new ArgumentNullException("flags");
              else if (flags.Count == 0)
            throw new ArgumentException("must contain at least one keyword or flag", "flags");

              return new ImapStoreDataItem(itemName, flags.GetNonApplicableFlagsRemoved().ToArray());
        }
Example #14
0
 public static ImapStoreDataItem ReplaceFlagsSilent(IImapMessageFlagSet flags)
 {
     return FlagsCommon("FLAGS.SILENT", flags);
 }
Example #15
0
 public static ImapStoreDataItem ReplaceFlags(IImapMessageFlagSet flags)
 {
     return FlagsCommon("FLAGS", flags);
 }
Example #16
0
 public ImapAppendMessage(Stream messageStream, DateTimeOffset internalDate, IImapMessageFlagSet flags)
     : this(messageStream, (DateTimeOffset?)internalDate, flags)
 {
 }
Example #17
0
 public void WriteMessage(IImapMessageFlagSet flags, Action<Stream> write)
 {
     WriteMessageCore(null, null, flags, write);
 }
        /// <summary>begins to send APPEND command</summary>
        /// <remarks>valid in authenticated state</remarks>
        public IAsyncResult BeginAppend(Stream messageBodyStream, DateTimeOffset? internalDate, IImapMessageFlagSet flags, ImapMailbox mailbox)
        {
            ValidateMailboxRelationship(mailbox);

              return BeginAppend(messageBodyStream, internalDate, flags, mailbox.Name);
        }