From 3d3d471cd5626a8cd67c78952cca5cf220a06c4b Mon Sep 17 00:00:00 2001 From: Kieran Date: Mon, 16 Feb 2026 23:12:41 +0000 Subject: [PATCH] fix(email): use proper MIME encoding for UTF-8 responses Replace bare .body() call with .singlepart(SinglePart::plain()) to ensure outgoing emails have explicit Content-Type: text/plain; charset=utf-8 header. This fixes recipients seeing raw quoted-printable encoding (e.g., =E2=80=99) instead of properly decoded UTF-8 characters. --- src/channels/email_channel.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/channels/email_channel.rs b/src/channels/email_channel.rs index e34c7de..2cb5db8 100644 --- a/src/channels/email_channel.rs +++ b/src/channels/email_channel.rs @@ -10,6 +10,7 @@ use anyhow::{anyhow, Result}; use async_trait::async_trait; +use lettre::message::SinglePart; use lettre::transport::smtp::authentication::Credentials; use lettre::{Message, SmtpTransport, Transport}; use mail_parser::{MessageParser, MimeHeaders}; @@ -389,7 +390,7 @@ impl Channel for EmailChannel { .from(self.config.from_address.parse()?) .to(recipient.parse()?) .subject(subject) - .body(body.to_string())?; + .singlepart(SinglePart::plain(body.to_string()))?; let transport = self.create_smtp_transport()?; transport.send(&email)?;