email - Outlook VBS oMail.to 对象将仅打印收件人行中的名字或地址
问题描述
我拼凑了一个 vbs 宏,以 .txt 格式保存批量电子邮件,文件名遵循以下格式:[yymmdd].[hhmm].[sender].[recipient].[subject line].txt
结果几乎是完美的,但我遇到的问题是,我发现打印“收件人”名称的最佳术语是 oMail.to,它将打印电子邮件收件人行中的每个名称/地址。我正在尝试找出一种方法来将打印的内容限制为仅显示在“收件人”行中的名字或地址,以便如果将电子邮件发送到 3 个地址,则保存的电子邮件仅在主题行中显示一个地址.
理想情况下,我希望发件人和收件人条款只打印已知联系人的姓氏或未知联系人的电子邮件地址,但我不希望有一个简单的解决方案来解决这个问题。
提前感谢您的任何想法!
Option Explicit
Public Sub SaveMessageAsTxt()
Dim oMail As Outlook.MailItem
Dim objItem As Object
Dim sPath As String
Dim dtDate As Date
Dim sName As String
Dim enviro As String
enviro = CStr(Environ("USERPROFILE"))
For Each objItem In ActiveExplorer.Selection
If objItem.MessageClass = "IPM.Note" Then
Set oMail = objItem
sName = oMail.SenderName & "." & oMail.To & "." & oMail.Subject
ReplaceCharsForFileName sName, "-"
dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yymmdd.", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "hhnn", _
vbUseSystemDayOfWeek, vbUseSystem) & "." & sName & ".txt"
sPath = enviro & "\Documents\Saved Emails\"
Debug.Print sPath & sName
oMail.SaveAs sPath & sName, olTXT
End If
Next
End Sub
Private Sub ReplaceCharsForFileName(sName As String, _
sChr As String _
)
sName = Replace(sName, "'", sChr)
sName = Replace(sName, "*", sChr)
sName = Replace(sName, "/", sChr)
sName = Replace(sName, "\", sChr)
sName = Replace(sName, ":", sChr)
sName = Replace(sName, "?", sChr)
sName = Replace(sName, Chr(34), sChr)
sName = Replace(sName, "<", sChr)
sName = Replace(sName, ">", sChr)
sName = Replace(sName, "|", sChr)
End Sub
解决方案
使用类的Recipients属性,该属性MailItem
返回Recipients
代表 Outlook 项目的所有收件人的集合。使用Recipients (index)
,其中index
是名称或索引号,返回单个Recipient
对象。名称可以是表示显示名称、别名或收件人的完整 SMTP 电子邮件地址的字符串。
访问该AddressEntry
属性会强制解析未解析的收件人姓名。如果无法解析名称,则返回错误。如果接收者被解析,则该Resolved
属性为真。然后您可以使用地址和Name
属性。
推荐阅读
- python-3.x - 向图像发出 ML Engine 请求
- jquery - jQuery 碰撞 - 如果任何标签重叠
- php - 如何在 Laravel 中的验证规则之间进行 OR?
- c - Are write failures to cgroup tasks deterministically non-persistent?
- sql - SQL Server for loop assistance
- c - 以 5 为增量倒计时
- python - Cannot change the value of global variable in Python
- django - Django - annotate with multiple Count
- java - i got wrong place name (got coordinate) when using Google Maps PlacePicker API
- angularjs - 如果事件在 5 秒内发生超过 3 次,则停止 socket.io 发出