Arrêter de classer une racine HTML multipartie/dépendante en tant qu'attachement

FixEmailService
Shipped
5 août 2026 à 01:33 UTC
Author
Kamo
Commit
2fda4ac

Chaque e-mail transactionnel que nous envoyons avec un logo d'ordre en ligne est arrivé dans notre propre /messages spectateurs avec un sujet correct et un corps complètement vide. isAttachmentPart() traité n'importe quelle partie portant une ID de contenu en pièce jointe. Le text/html ROOT d'une multipart/liée a un par conception et appliqueInlineRelatedContent le fixer pour que le paramètre de démarrage RFC 2387 puisse pointer sur le corps, ce qui est ce qui permet Des passerelles plus strictes et Outlook le trouvent. Alors walkParseMultipart a classé le corps comme une pièce jointe et continuez à l'avoir passée avant d'atteindre le texte/html html Le corps est resté nul, et parce qu'un envoi connexe ne transporte pas text/plaine alternative, textBody est nul trop - le téléspectateur n'a rien à rendre. Vérifié par rapport au message délivré plutôt qu'inférus: le fichier maildir raw détient une multipartie/liée bien formée avec un texte complet de 4329 octets/la racine (Content-ID, 7 bits, limites intactes) et deux PNG en ligne de base64. Le Le message n'a jamais été le problème; le lecteur l'a été. C'était invisible jusqu'à présent parce que le courrier transactionnel sans logos en ligne est envoyé sous la forme d'un message SIMPLE non-multiparte, dont getMessage() s'occupe sur le «travillage de contenu de la chaîne» et ne consulte jamais isAttachmentPart du tout. La règle Content-ID s'applique toujours à tout ce qui n'est pas un organe de texte, donc le Les logos en ligne restent listés et cid: les références ne cessent de se résoudre. Teste d'analyser RAW MIME plutôt que d'assembler des pièces avec setContent - qui ne le fait pas écrire l'en-tête de type contenu jusqu'à ce que le message d'enfermement soit sauvegardé, donc un assemblage texte/lettre de rapport en partie et toutes les branches isMimeType("text/html") ratés silencieusement. A un rendez-vous qui se trouve autour de l'unique en-tête sur lequel cette logique s'allumerait aurait dépassé contre le code brisé. Confirmé: 4 du 6 échec sans le correctif.

All changes

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation