vba - 从电子邮件中检索发件人姓名
问题描述
我想将选定的电子邮件复制到带有发件人姓名、日期和消息的特定文件夹。
我在这个网站上找到了代码。它将电子邮件保存到特定文件夹,但发件人姓名显示为四位数字 (0941)。
示例
20191219- 0941 --FW_ 邮件主题
Option Explicit
Public Sub SaveMessageAsMsg()
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
**Dim sSenderName As String
Dim sSenderEmailAddress As String**
enviro = CStr(Environ("USERPROFILE"))
For Each objItem In ActiveExplorer.Selection
Set oMail = objItem
sName = oMail.Subject
ReplaceCharsForFileName sName, "_"
dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnn", _
vbUseSystemDayOfWeek, vbUseSystem) & "-" & **sSenderName** & "-" & sName & ".msg"
sPath = "C:\TEST\JV Approval Backup\"
Debug.Print sPath & sName
oMail.SaveAs sPath & sName, olMSG
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, Chr(34), sChr)
sName = Replace(sName, "<", sChr)
sName = Replace(sName, ">", sChr)
sName = Replace(sName, "|", sChr)
sName = Replace(sName, "@", sChr)
End Sub
解决方案
尽管您有变量来保存发件人姓名和发件人电子邮件地址,但您不会将值复制到这些变量中。我假设您认为是发件人姓名的四位数是时间。
有三个发件人属性可供选择: .Sender
、.SenderEmailAddress
和.SenderName
。 .SenderEmailAddress
始终是电子邮件地址。 .Sender
几乎总是一个友好的名字,例如 John Smith,但偶尔它与.SenderEmailAddress
. .SenderName
通常与 相同,.Sender
但有时与 相同.SenderEmailAddress
。
(1)我建议你更换:
Dim sSenderName As String
Dim sSenderEmailAddress As String
经过
Dim sSender As String
(2) 添加您喜欢的以下任何一项:
sSender = oMail.Sender
sSender = oMail.SenderName
sSender = oMail.SenderEmailAddress
(3) 替换:
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _ vbUseSystem) & Format(dtDate, "-hhnn", _ vbUseSystemDayOfWeek, vbUseSystem) & "-" & **sSenderName** & "-" & sName & ".msg"
经过
sName = Format(dtDate, "yyyymmdd"-hhnn") & "-" & sSender & "-" & sName & ".msg"
尝试上述方法并报告,如果它没有给出您寻求的结果。
推荐阅读
- python - Emacs 中的 Python:跳转到全局常量的定义
- typescript - 测试非可选类型
- reactjs - 我应该将 Redux 用于用户配置文件吗?
- javascript - 如何使脚本在 Google Chrome 扩展 HTML 模板中执行?
- java - 使用 'cmd /c dir' 与 'dir'
- python - 如何在应用函数中获得动态累积和?
- java - 无法调用 findByEmail,因为“this.userRepository”为空错误
- javascript - 记录数据但不渲染 p 标签,为什么?
- c++ - C++ 20 标准中对“指向合适创建对象的指针”有什么要求和限制?
- java - 如何在 Java 中使用 selenium 在 Tor 浏览器中打开网页?