diff --git a/.workbuddy/memory/2026-06-01.md b/.workbuddy/memory/2026-06-01.md index 73be414..f21a4c9 100644 --- a/.workbuddy/memory/2026-06-01.md +++ b/.workbuddy/memory/2026-06-01.md @@ -17,3 +17,9 @@ - 部署模板目录 internal/web/templates/ + admin/ 子目录 - systemd 增加 AmbientCapabilities=CAP_NET_BIND_SERVICE(绑定 25/465 等特权端口) - 附件目录 /srv/mail_go/attachments/ + +## MailGo 邮件处理 Bug 修复 +- **RFC 2047 地址解码**:SMTP Data() 和 IMAP CreateMessage() 中 From/To/Cc 从 `header.Get()` 改为 `mailutil.FormatAddressList()`(内部用 `header.AddressList()` 自动解码 RFC 2047 编码的中文名等) +- **charset 转码**:新增 `internal/mailutil/codec.go`,`DecodeCharset()` 检测 Content-Type charset 参数,用 `golang.org/x/text/encoding/htmlindex` 将 gb2312 等非 UTF-8 编码转 UTF-8 +- **原始邮件数据保留**:Message 模型新增 `RawData` 字段(`type:mediumtext`),SMTP/IMAP 接收时存原始邮件;IMAP `buildRawMessage()` 优先使用 RawData,降级才从字段重建 +- **邮件显示修复**:HTML 邮件改用 ` {{else}}
{{.message.TextBody}}
{{end}} diff --git a/internal/web/templates/view.html b/internal/web/templates/view.html index 7290ab5..3d3d803 100644 --- a/internal/web/templates/view.html +++ b/internal/web/templates/view.html @@ -6,6 +6,15 @@ 查看邮件 - MailGo {{template "styles" .}} + {{template "navbar" .}} @@ -32,7 +41,7 @@
{{if .message.HtmlBody}} - {{.message.HtmlBody | safeHTML}} + {{else}}
{{.message.TextBody}}
{{end}}