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
- Ensure a valid MimeMessage instance is created/loaded before constructing AppendRequest.
- If the message may be absent, guard the append operation behind a null check and skip or log instead.
- 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
- Never let message loaders return null; throw on failure instead.
- Validate loaded messages immediately after loading, before further use.
- Use nullable reference types and null-forgiveness checks in the message pipeline.
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
- keywords
- Value cannot be null. (Parameter 'name')
- Value cannot be null. (Parameter 'rights')
- Value cannot be null. (Parameter 'array')
- Value cannot be null. (Parameter 'message')
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)