如何在Domino代理中读取Multipart MIME邮件的纯文本正文?
Domino多部分MIME邮件纯文本提取方案
核心概念快速梳理
- MIME实体:邮件的基本组成单元,可对应纯文本正文、HTML正文、附件或嵌套的多部分容器
- 同级实体:同一多部分容器下的并列实体,比如同一邮件里的纯文本和HTML正文属于同级
- 多部分(Multipart):包含多个子实体的容器,通过**边界(Boundary)**分隔不同子实体,邮件头的
Content-Type字段会明确标注边界值 - Content-Type:标识MIME实体的类型,纯文本正文对应
text/plain
纯文本提取步骤与LotusScript示例
以下是Domino代理中提取纯文本正文的代码实现:
Sub Initialize Dim s As New NotesSession Dim doc As NotesDocument Dim rootMIME As NotesMIMEEntity Dim childMIME As NotesMIMEEntity Dim contentType As String Dim plainContent As String ' 获取当前代理处理的目标邮件文档 Set doc = s.DocumentContext If doc Is Nothing Then Exit Sub ' 获取邮件的根MIME实体 Set rootMIME = doc.GetMIMEEntity If rootMIME Is Nothing Then Messagebox "目标文档非MIME格式", MB_OK Exit Sub End If contentType = Lcase(rootMIME.ContentType) ' 处理多部分MIME结构 If Left(contentType, 10) = "multipart/" Then ' 遍历所有子实体,寻找纯文本类型 Set childMIME = rootMIME.GetFirstChildEntity Do While Not childMIME Is Nothing If Lcase(childMIME.ContentType) = "text/plain" Then plainContent = childMIME.ContentAsText Exit Do End If Set childMIME = childMIME.GetNextSibling Loop Else ' 非多结构MIME,直接判断是否为纯文本 If contentType = "text/plain" Then plainContent = rootMIME.ContentAsText End If End If ' 业务逻辑:使用提取到的纯文本 If plainContent <> "" Then ' 此处可添加你的内容提取逻辑,比如按模板匹配关键词 ' 示例:输出纯文本内容 Messagebox "提取的纯文本正文:" & Chr(13) & plainContent, MB_OK Else Messagebox "未找到纯文本正文", MB_OK End If End Sub
关键注意事项
- 优先匹配
text/plain类型的实体,这是标准纯文本正文的标识 - 多部分MIME结构中,子实体是同级关系,需通过
GetNextSibling遍历所有同级实体 ContentAsText方法会自动处理MIME编码转换,无需手动解码
内容的提问来源于stack exchange,提问作者Matt Smith
相关产品推荐
相关产品推荐

