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); }
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; }
public ImapAppendMessage(Stream messageStream, IImapMessageFlagSet flags) : this(messageStream, null, flags) { }
public ImapAppendMessage(byte[] message, DateTimeOffset internalDate, IImapMessageFlagSet flags) : this(new MemoryStream(message, false), (DateTimeOffset?)internalDate, flags) { }
public ImapAppendMessage(byte[] message, IImapMessageFlagSet flags) : this(new MemoryStream(message, false), null, flags) { }
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(); } } }
public void WriteMessage(long length, DateTimeOffset internalDate, IImapMessageFlagSet flags, Action<Stream> write) { WriteMessageCore(length, internalDate, flags, write); }
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; } }
public void AppendMessage(Stream stream, DateTimeOffset internalDate, IImapMessageFlagSet flags) { AppendMessage(new ImapAppendMessage(stream, internalDate, flags)); }
public void AppendMessage(Stream stream, IImapMessageFlagSet flags) { AppendMessage(new ImapAppendMessage(stream, flags)); }
public void AddFlags(IImapMessageFlagSet flagsAndKeywords) { Store(ImapStoreDataItem.AddFlags(flagsAndKeywords)); }
// 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()); }
public static ImapStoreDataItem ReplaceFlagsSilent(IImapMessageFlagSet flags) { return FlagsCommon("FLAGS.SILENT", flags); }
public static ImapStoreDataItem ReplaceFlags(IImapMessageFlagSet flags) { return FlagsCommon("FLAGS", flags); }
public ImapAppendMessage(Stream messageStream, DateTimeOffset internalDate, IImapMessageFlagSet flags) : this(messageStream, (DateTimeOffset?)internalDate, flags) { }
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); }