我需要提取 Outlook 电子邮件并用发件人电子邮件地址的一部分命名(在“@”之后和“.com”之前)。我的代码工作正常,但至于重命名部分,一些文件没有正确分配,尤其是线程中的电子邮件。在过去的两周里,我曾尝试寻找解决方案,但没有这样做。如果有人能在这个问题上帮助我,将不胜感激。谢谢!
[更新]:在一个线程内:它是从原始电子邮件开始的所有后续回复的运行列表。
我编写了将电子邮件提取到指定位置的代码,提取后,该电子邮件应命名为“公司名称_日期时间收到_标题的电子邮件”。用户名假设从发件人电子邮件地址中提取。例如,如果我收到来自 john@companyA.com 的电子邮件,主题标题为 "project" ,当我运行提取时,重命名方式应为 "company A_12-08-2017 09:30AM_Project"。
但是,使用此当前代码,某些电子邮件将以不同的公司名称命名,尤其是线程中的电子邮件。例如,john@companyA.com 发送一封标题为“Project”的电子邮件,我 (cheese@companyB.com) 回复了邮件,标题现在变为“RE:Project”。当我运行提取时,电子邮件“项目”的电子邮件重命名方式是正确的,而对于电子邮件“RE:Project”,重命名结果结果是“companyC_datetime received_RE:Project”,其中公司 C 甚至不存在于该电子邮件中. (公司 C 来自其他电子邮件)。
Set SubFolder = OutlookApp.Session.GetFolderFromID(EntryID(i), StoreID(i))
On Error Resume Next
For j = 1 To SubFolder.Items.Count
Set MItem = SubFolder.Items(j)
strEmail = Split(SubFolder.Items(j).SenderEmailAddress, "@")(1)
If (InStr(1, strEmail, ".") > 0) Then
strFullName = Split(strEmail, ".")(0)
End If
StrReceived = Format(MItem.ReceivedTime, "dd-mm-yyyy H.MMAMPM")
strSubject = MItem.Subject
'Rename file as Bank name_Date_Title
StrName = StripIllegalChar(strSubject)
StrFile = StrSaveFolder & strFullName & "_" & StrReceived & "_" & StrName & ".msg"
StrFile = Left(StrFile, 256)
MItem.SaveAs StrFile, 3
Next j
On Error GoTo 0
Next i