Hi all,
if you're struggling with Gmail inbox placement despite clean headers
and good reputation, your ESP might be sabotaging your messages without
your knowledge. SendGrid's SMTP relay violates RFC 2047 and RFC 2369 by
MIME-encoding the List-Unsubscribe header as soon as its value exceeds
77 bytes. This breaks unsubscribe links in Gmail and Outlook. The issue
has been confirmed internally but remains unresolved. SendGrid sends
over 100 billion emails per month - this is a massive standards
compliance failure with real-world consequences for deliverability and
compliance.
I'm running a recommendation service that sends individualized alerts
via email. Each email includes proper List-Unsubscribe and List-Archive
headers, fully compliant with RFC 2369: plain ASCII, no encoding, no
unnecessary complexity.
Example of what we send:
List-Unsubscribe:
<https://www.example.com/unsubscribe/>,<mailto:[email protected]>
As long as this header is 77 bytes or fewer, SendGrid relays it
unchanged. But when the value reaches 78 bytes, their SMTP relay
forcibly rewrites it using MIME encoded-word syntax (RFC 2047). That
encoding is explicitly forbidden in structured headers like
List-Unsubscribe.
Here is what SendGrid sends instead:
List-Unsubscribe:
=?us-ascii?Q?=3Chttps=3A=2F=2Fwww=2Eexample=2Ecom=2Funsubscribe=2F=3E=2C=3Cmailto=3Aunsubscribe=40opt?=
=?us-ascii?Q?out=2Eexample=2Ecom=3E?=
This encoding breaks unsubscribe link parsing in both Gmail and Outlook.
As a result, recipients cannot easily unsubscribe via UI elements, which
can lead to higher complaint rates and lower inbox placement. Worse,
Gmail's "Show original" view decodes the header, so one can initially be
unaware of the rewriting.
This behavior violates:
RFC 2047, which prohibits encoded-words in structured headers like
List-Unsubscribe.
RFC 2369, which defines the syntax and structure of the List-Unsubscribe
header and assumes parsability in plain ASCII.
There is no justification for this behavior. MIME encoding is meant for
non-ASCII characters. Encoding plain ASCII URLs unnecessarily breaks
downstream compatibility and violates fundamental expectations of MTA
and MUA interoperability.
SendGrid engineers have acknowledged the issue, but there's no visible
progress, timeline, or formal fix announced.
Given that SendGrid processes over 100 billion emails per month, this
bug results in the routine dispatch of hundreds of millions of
RFC-violating emails daily. It's not just noncompliant; it actively
undermines unsubscribe mechanisms, potentially violating legal
requirements like CAN-SPAM or GDPR depending on jurisdiction.
If you're using SendGrid's SMTP relay, inspect your List-Unsubscribe
headers carefully. And if you're seeing unexplained deliverability
issues - especially with Gmail - this might be a hidden reason. Speak
up. This isn't a feature request - it's a standards bug with serious
consequences.
To any Twilio or SendGrid team members reading along: your help in
surfacing this internally would really be appreciated.
Originally posted on r/sysadmin.
_______________________________________________
mailop mailing list
[email protected]
https://list.mailop.org/listinfo/mailop