jstedfast/MailKit · error · NotSupportedException
The POP3 server does not support the LANG extension.
Error message
The POP3 server does not support the LANG extension.
What it means
Pop3Client.GetLanguages queues a LANG command and throws this NotSupportedException when the server did not advertise the LANG capability (RFC 8158) in CAPA. Without that capability the server cannot report the languages it supports for error messages, so MailKit refuses the request up front.
Solutions
- Check client.Capabilities.HasFlag (Pop3Capabilities.Lang) before calling GetLanguages and skip if absent.
- Catch NotSupportedException and proceed with default (English) server messages.
- Upgrade the POP3 server to one implementing RFC 8158 if language negotiation is required.
- Only call GetLanguages when localization of server errors is actually needed.
Example fix
// before
var langs = client.GetLanguages (cancellationToken);
// after
if (client.Capabilities.HasFlag (Pop3Capabilities.Lang)) {
var langs = client.GetLanguages (cancellationToken);
} Defensive patterns
Strategy: validation
Validate before calling
bool langSupported = client.Capabilities.HasFlag (Pop3Capabilities.Lang);
if (!langSupported)
return new List<Pop3Language> (); // server default only Try / catch
try {
var langs = client.GetLanguages (cancellationToken);
} catch (NotSupportedException) {
var langs = null; // server does not support LANG; assume English/default
} Prevention
- Gate RFC 8158 APIs (GetLanguages/SetLanguage) on Pop3Capabilities.Lang
- Design localization as optional: fall back to server default messages
- Test against a minimal POP3 daemon to catch unconditional extension usage
When it happens
Trigger: Calling GetLanguages/GetLanguagesAsync on a POP3 server without LANG support; servers that predate RFC 8158 or embedded servers that omit the extension.
Common situations: Localizing server error messages against legacy ISP POP3 servers; code that unconditionally calls GetLanguages after connect; minimal Docker/appliance mail servers.
Related errors
- The POP3 server does not support the UTF8 extension.
- The POP3 server does not support the UIDL extension.
- The IMAP server does not support the QRESYNC extension.
- The IMAP server does not support the UTF8=ACCEPT extension.
- The IMAP server does not support the ID extension.
AI-assisted analysis of jstedfast/MailKit@9d3859a785 (2026-09-15).
Data as JSON: /api/errors/0e8b60a8177ff3cf.
Report an issue: GitHub.
Appendix: source
Thrown at MailKit/Net/Pop3/Pop3Client.cs:1677
{
if (pc.Status != Pop3CommandStatus.Ok)
return Task.CompletedTask;
if (doAsync)
return ReadLangResponseAsync (engine, pc, cancellationToken);
ReadLangResponse (engine, pc, cancellationToken);
return Task.CompletedTask;
}
Pop3Command QueueLangCommand (out List<Pop3Language> langs)
{
CheckDisposed ();
CheckConnected ();
if ((Capabilities & Pop3Capabilities.Lang) == 0)
throw new NotSupportedException ("The POP3 server does not support the LANG extension.");
var pc = engine.QueueCommand (ProcessLangResponse, "LANG\r\n");
pc.UserData = langs = new List<Pop3Language> ();
return pc;
}
/// <summary>
/// Get the list of languages supported by the POP3 server.
/// </summary>
/// <remarks>
/// If the POP3 server supports the LANG extension, it is possible to
/// query the list of languages supported by the POP3 server that can
/// be used for error messages.
/// </remarks>
/// <returns>The supported languages.</returns>
/// <param name="cancellationToken">The cancellation token.</param>
/// <exception cref="System.ObjectDisposedException">View on GitHub (pinned to 9d3859a785)