wp_mail() sets Content-Type header twice for multipart emails
|Reported by:||rmccue||Owned by:||nacin|
|Severity:||normal||Keywords:||gci has-patch westi-likes needs-refresh|
When trying to send emails via wp_mail() with a Content-Type of multipart/alternative, the Content-Type header will be set with $phpmailer->ContentType, and again with $phpmailer->AddCustomHeader(), which causes two Content-Type headers in the email:
Content-Type: multipart/alternative; boundary="example_boundary" Content-Type: multipart/alternative; charset=""
This appears to cause errors in Outlook, as there is no boundary on the latter.
The cause of this is PHPMailer::GetMailMIME(), as it does not know that the email is a multipart email. The easiest way to achieve this appears to be to simply allow the user to set the AltBody via wp_mail(). In order to achieve backwards compatibility, wp_mail() should work out which part is the text/plain one and which is the text/html one based on the boundary.
I'll be working on a patch for this.
Change History (32)
comment:13 westi — 3 years ago
- Milestone changed from Future Release to 3.2
- Owner changed from rmccue to westi
- Status changed from assigned to reviewing
comment:22 westi — 3 years ago
- Keywords 3.3-early westi-likes added
- Milestone changed from 3.2 to Future Release
comment:27 rmccue — 11 months ago
- Keywords needs-refresh added; 3.3-early removed
- Milestone changed from Future Release to 3.6
- Owner changed from westi to nacin