jstedfast/MailKit · error · ArgumentNullException

message

Error message

message

What it means

MailKit's AppendRequest(MimeMessage, MessageFlags, DateTimeOffset) constructor throws ArgumentNullException when the message parameter is null. The message is the MIME content to upload via IMAP APPEND, so it is mandatory. A null message cannot be serialized and is rejected immediately.

Solutions

  1. Ensure a valid MimeMessage instance is created/loaded before constructing AppendRequest.
  2. If the message may be absent, guard the append operation behind a null check and skip or log instead.
  3. Fix the upstream loader so it throws a meaningful exception rather than returning null.

Example fix

// before
MimeMessage msg = LoadMessage(path); // may return null
var req = new AppendRequest(msg, MessageFlags.None, DateTimeOffset.Now);

// after
var msg = LoadMessage(path) ?? throw new InvalidOperationException($"Could not load message at {path}");
var req = new AppendRequest(msg, MessageFlags.None, DateTimeOffset.Now);
Defensive patterns

Strategy: validation

Validate before calling

if (message == null)
    throw new InvalidOperationException("Cannot append: message was not loaded");
var req = new AppendRequest(message, flags, internalDate);

Type guard

bool IsValidMessage(MimeMessage message) => message != null;

Try / catch

try
{
    var req = new AppendRequest(message, flags, internalDate);
}
catch (ArgumentNullException ex) when (ex.ParamName == "message")
{
    logger.LogError(ex, "Null MimeMessage passed to AppendRequest");
}

Prevention

When it happens

Trigger: Calling new AppendRequest(null, flags, internalDate) — e.g. a MimeMessage variable from a failed parse (MimeMessage.Load returning null in custom code), or a method parameter passed straight through without a null check.

Common situations: Message-loading code that swallows exceptions and returns null; refactoring where the message is conditionally created; forwarding a message retrieved from another API that may return null.

Related errors


AI-assisted analysis of jstedfast/MailKit@9d3859a785 (2026-09-15). Data as JSON: /api/errors/f93c6f46817a7e12. Report an issue: GitHub.

Appendix: source

Thrown at MailKit/AppendRequest.cs:103

			Flags = flags;
		}

		/// <summary>
		/// Initializes a new instance of the <see cref="AppendRequest"/> class.
		/// </summary>
		/// <remarks>
		/// Creates a new <see cref="AppendRequest"/>.
		/// </remarks>
		/// <param name="message">The message.</param>
		/// <param name="flags">The message flags.</param>
		/// <param name="internalDate">The internal date of the message.</param>
		/// <exception cref="ArgumentNullException">
		/// <paramref name="message"/> is <see langword="null" />.
		/// </exception>
		public AppendRequest (MimeMessage message, MessageFlags flags, DateTimeOffset internalDate)
		{
			if (message == null)
				throw new ArgumentNullException (nameof (message));

			Message = message;
			Flags = flags;
			InternalDate = internalDate;
		}

		/// <summary>
		/// Initializes a new instance of the <see cref="AppendRequest"/> class.
		/// </summary>
		/// <remarks>
		/// Creates a new <see cref="AppendRequest"/>.
		/// </remarks>
		/// <param name="message">The message.</param>
		/// <param name="flags">The message flags.</param>
		/// <param name="keywords">The message keywords.</param>
		/// <param name="internalDate">The internal date of the message.</param>
		/// <exception cref="ArgumentNullException">
		/// <para><paramref name="message"/> is <see langword="null" />.</para>

View on GitHub (pinned to 9d3859a785)