vba - 电子邮件正文中的奇怪字符
问题描述
我对 VBScript 有一点问题。它应该如何工作。这是一个简单的代码,应该遍历特定文件夹中的所有电子邮件,获取特定的电子邮件正文并尝试查找正则表达式。它在我的计算机上正常工作,但不知何故,相同的代码在其他笔记本电脑(我朋友的笔记本电脑)上不起作用。大多数(不是全部)电子邮件正文看起来很奇怪,如下面的附加屏幕所示:
我想补充一点,我们有相同的电子邮件要测试。还有什么奇怪的是,使用脚本后,它会将第一封电子邮件转换成这些奇怪的字符。这就是代码的样子:
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objMailbox = objNamespace.Folders(Main_mailbox)
Set objMainMailbox = objMailbox.Folders(Main_folder)
Set objFolder = objMainMailbox.Folders(Sub_folder)
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "<.+>"
Set colItems = objFolder.Items
NumberOfEmails = colItems.Count
WScript.Echo NumberOfEmails & " emails found"
For i = NumberOfEmails To 1 Step - 1
BodyMsg = colItems(i).Body
Lines = Split(BodyMsg, vbCrlf)
For j = 1 To UBound(Lines)
If InStr(1, Lines(j), "Reply-To:") Then
Set RegMatches = re.Execute(Lines(j))
For Each myMatch In RegMatches
OutputMatch = OutputMatch & " " & myMatch & ";"
OutputMatch = Replace(OutputMatch, "<", "", 1, 1)
OutputMatch = Replace(OutputMatch, ">", "", 1, 1)
EmailCount = EmailCount + 1
Next
End If
Next
Next
我想知道它是否与编码或类似的东西有关,如果该问题是由系统设置引起的?
如果您需要更多我忘记提及的信息,请告诉我。
解决方案
这听起来确实像是您遇到了 NDR(未送达报告 - 由ReportItem
对象表示) -ReportItem.Body
通过 Outlook 对象模型访问时返回乱码。这已经是现在几个版本的 Outlook 的问题。
您可以通过检查是否仅获取MailItem
对象(Class 属性必须为 43 ( olMail
))来跳过此类项目,也可以使用Redemption - 它的RDOReportItem对象没有此问题。
推荐阅读
- reactjs - 在 React 中将深度嵌套的 JSON 对象传递给 PureComponent 道具的最佳方法是什么?
- javascript - 用户更改类型时添加新类
- mysql - 解密用 CryptoJS 加密的 mysql 中的 AES
- .net - Lucene.net 不返回搜索结果
- matlab - 包含文件路径的代码中的 MATLAB 换行
- node.js - 与所有包共享根 package.json 中的工具
- hash - 自定义哈希函数
- sails.js - https 在sailsjs的localhost中不起作用
- php - 在 codeigniter 中是否有任何方法可以检查 ( $this->db->group_start(); ) 即组是否已经启动。或任何这样做的技巧
- php - 使用 PHP ODBC 驱动程序查询 Pervasive Database PSQL