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

Outlook MailItem.SaveAs保存非拉丁字符时乱码问题求助

解决Outlook .msg文件保存时非拉丁字符乱码问题

问题根源

你遇到的乱码问题本质是保存格式错误:olMSG是ANSI编码的MSG格式,仅支持系统默认代码页内的字符,希腊语这类非拉丁字符会被强制替换为问号。olMSGUnicode才是专为Unicode字符设计的保存类型,能完整保留所有非拉丁字符。

修复方案

将SaveAs方法的类型参数替换为Outlook.OlSaveAsType.olMSGUnicode,同时优化路径拼接方式避免潜在错误:

public void Package(Outlook.MailItem mailItem)
{           
    string path = Path.Combine(Path.GetTempPath(), "mail.msg");            
    try
    {
        // 使用Unicode编码的MSG格式保存,支持所有非拉丁字符
        mailItem.SaveAs(path, Outlook.OlSaveAsType.olMSGUnicode);

        using (var fs = new FileStream(path, FileMode.Open))
        {
            this.Content = new byte[fs.Length];
            fs.Read(Content, 0, Content.Length);
        }
    }
    finally
    {
        File.Delete(path);
    }
}

补充说明

  • olMSGUnicode对应的枚举值为3,Office 2007及以上版本的Outlook对象库均支持该枚举。
  • 读取字节流的逻辑无需修改,FileStream按原始字节读取,不会破坏已保存的Unicode内容。
  • 该格式不依赖系统区域编码,只要使用正确的保存类型,就能稳定支持希腊语等非拉丁字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:05:10