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

如何将Apple MailKit扩展中的邮件正文转换为可读格式?

解决Apple MailKit扩展中Quoted-Printable编码文本解析问题

你不需要自己实现复杂的编码解析逻辑,Foundation框架提供了内置方法可以处理完整的Quoted-Printable编码文本,以下是两种可行方案:

方案一:直接解码Quoted-Printable字符串

使用NSString的stringByDecodingQuotedPrintable方法,它能自动处理跨换行的编码片段(比如你例子中的=C3=\n=9F),支持完整文本解析:

func allowMessageSendForSession(_ session: MEComposeSession, completion: @escaping (Error?) -> Void) {
    let mailMessage = session.mailMessage
    let subject = mailMessage.subject
    let sender = mailMessage.fromAddress.addressString ?? "undefined"
    
    if let rawData = mailMessage.rawData, let encodedText = String(data: rawData, encoding: .utf8) {
        // 解码Quoted-Printable编码文本
        let decodedText = (encodedText as NSString).stringByDecodingQuotedPrintable
        print(decodedText) // 输出可读的邮件内容
    }
    
    completion(nil)
}

方案二:直接解析完整MIME邮件数据

如果邮件包含多种编码格式(比如同时存在Quoted-Printable和Base64),可以用NSAttributedString直接解析MIME格式的原始数据,自动处理所有编码并提取纯文本:

func allowMessageSendForSession(_ session: MEComposeSession, completion: @escaping (Error?) -> Void) {
    let mailMessage = session.mailMessage
    let subject = mailMessage.subject
    let sender = mailMessage.fromAddress.addressString ?? "undefined"
    
    if let rawData = mailMessage.rawData {
        do {
            let parseOptions: [NSAttributedString.DocumentReadingOptionKey: Any] = [
                .documentType: NSAttributedString.DocumentType.mime,
                .characterEncoding: String.Encoding.utf8.rawValue
            ]
            // 解析MIME数据为富文本
            let attributedContent = try NSAttributedString(data: rawData, options: parseOptions, documentAttributes: nil)
            // 提取纯文本内容
            let plainTextContent = attributedContent.string
            print(plainTextContent)
        } catch {
            print("邮件内容解析失败:\(error.localizedDescription)")
        }
    }
    
    completion(nil)
}

方案二的优势在于无需单独处理编码类型,框架会自动识别并解析邮件中的各种MIME编码格式,更适合处理完整的邮件内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:40:43