J'utilise nodemailer pour envoyer des e-mails avec des images incorporées, mais les images n'apparaissent pas dans le corps du message dans une application client de messagerie (par exemple, thunderbird). Je me doute que cela est arrivé à cause de Content-Transfer-Encoding
est réglé sur quoted-printable
. Donc, il ajoute des personnages en 3D (qui est pour l'encodage = caractère) dans src
propriété de img
élément:L'image incorporée ne s'affiche pas dans le corps de l'e-mail
<img src=3D"cid:[email protected]">
Comment désactiver quoted-printable
encodage en permanence dans nodemailer? J'ai essayé de mettre textEncoding: 'base64'
dans les options de message, mais il semble que nodemailer l'ignore.
let message = {
from: {
name: 'Someone',
address: '[email protected]'
},
to: {
name: sender,
address: emailTo.toLowerCase()
},
subject: 'Purchased Tickets',
html: 'Some text<br><img src="cid:[email protected]"/><br>Some more text<br><img src="cid:[email protected]"/><br>',
attachments: ticketList.map((t, i) => ({
filename: `ticket${i + 1}.png`,
content: t.qrCode,
cid: `${t.ticketNumber}@emailaddress.com`
})),
encoding: 'base64',
textEncoding: 'base64'
}
transporter.sendMail(message, (err, info) => {
if (err) {
console.log(err)
} else {
console.log(info)
}
})
Je l'ai essayé avec des applications client de messagerie, et apparemment certains écrans et certains ne le font pas. –