You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GemBox Word转邮件时£符号变问号,如何设置UTF-8且不破坏模板?

解决GemBox Word转Email时£符号变问号且模板损坏的问题

核心原因

Outlook对MHTML格式的UTF-8编码兼容性较差,直接设置Encoding.UTF8会破坏邮件模板结构;而默认编码未正确映射£符号,导致出现问号乱码。

可行解决方案

方案1:使用Windows-1252编码(推荐,完美兼容Outlook)

Windows-1252编码原生支持£符号,且Outlook对该编码的MHTML解析稳定性高,不会损坏原有模板结构。修改代码如下:

GemBox.Document.ComponentInfo.SetLicense(this.GemBoxDocumentLisense);
GemBox.Email.ComponentInfo.SetLicense(this.GemBoxEmailLisense);

var document = DocumentModel.Load(documentPath);
using (MemoryStream gemBoxOutput = new MemoryStream())
{
    document.Save(gemBoxOutput, new GemBox.Document.HtmlSaveOptions()
    {
        HtmlType = GemBox.Document.HtmlType.Mhtml,
        UseContentIdHeaders = true,
        Encoding = Encoding.GetEncoding(1252) // 替换为Windows-1252编码
    });
    // 重置流指针至起始位置,避免加载失败
    gemBoxOutput.Position = 0;
    MailMessage.Load(gemBoxOutput, MailMessageFormat.Mhtml);
}

方案2:强制UTF-8编码并修复字符集声明(需验证兼容性)

若业务要求必须使用UTF-8,需手动为MHTML添加字符集声明,确保Outlook能正确识别编码:

GemBox.Document.ComponentInfo.SetLicense(this.GemBoxDocumentLisense);
GemBox.Email.ComponentInfo.SetLicense(this.GemBoxEmailLisense);

var document = DocumentModel.Load(documentPath);
using (MemoryStream gemBoxOutput = new MemoryStream())
{
    document.Save(gemBoxOutput, new GemBox.Document.HtmlSaveOptions()
    {
        HtmlType = GemBox.Document.HtmlType.Mhtml,
        UseContentIdHeaders = true,
        Encoding = Encoding.UTF8
    });

    // 读取MHTML内容并添加UTF-8字符集声明
    gemBoxOutput.Position = 0;
    string mhtmlContent = new StreamReader(gemBoxOutput).ReadToEnd();
    mhtmlContent = mhtmlContent.Replace("Content-Type: text/html", "Content-Type: text/html; charset=utf-8");

    // 重新写入流并加载邮件
    using (MemoryStream correctedStream = new MemoryStream(Encoding.UTF8.GetBytes(mhtmlContent)))
    {
        MailMessage.Load(correctedStream, MailMessageFormat.Mhtml);
    }
}

关键注意事项

  • 调用MailMessage.Load前必须重置流位置(gemBoxOutput.Position = 0),否则会因流指针在末尾导致加载失败。
  • 优先选择Windows-1252编码,可最大程度避免Outlook出现布局错乱或加载异常问题。

内容的提问来源于stack exchange,提问作者Bilal lilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 03:27:51