我有一个循环,以检查收到的电子邮件从乔多伊与特定的主题。该循环工作并从Joe保存附件。
If (Msg.SenderName = "Doe, Joe") And _
(Msg.Subject = "Test: Smartsheet") And _
(Msg.Attachments.Count >= 1) Then我想用SenderEmailAddress代替SenderName。
I tested below codes:
If (Msg.SenderEmailAddress = "test@noreplay.com") And _
(Msg.Subject = "Test: Smartsheet") And _
(Msg.Attachments.Count >= 1) Then和
If (SenderEmailAddress = "test@noreplay.com") And _
(Msg.Subject = "Test: Smartsheet") And _
(Msg.Attachments.Count >= 1) Then发布于 2018-11-01 11:54:13
第二段新代码肯定不能工作,因为SenderEmailAddress是Msg的一个属性。
要使Msg.SenderEmailAddress = "test@noreplay.com"返回True,必须有一个完全匹配的。"Test@noreplay.com“或"test@NoReplay.com”或任何其他此类变体都不会返回True。
建议1:
还原原始代码,但添加一条附加语句
If (Msg.SenderName = "Doe, Joe") And _
(Msg.Subject = "Test: Smartsheet") And _
(Msg.Attachments.Count >= 1) Then
Debug.Print Msg.SenderEmailAddress运行宏后,立即窗口将包含Joe电子邮件的发件人电子邮件地址列表,以便您可以检查它们是否与您预期的一样。
建议2:
使比较大小写不敏感:
If (LCase(Msg.SenderEmailAddress) = "test@noreplay.com") And _
(Msg.Subject = "Test: Smartsheet") And _
(Msg.Attachments.Count >= 1) Then发布于 2018-11-01 16:26:18
请记住,MailItem.SenderEmailAddress和MailItem.SenderName是Outlook对象模型中的只读属性。还请注意,在MAPI级别上,有大约六个与发件人相关的属性,最重要的是发送方条目id (这是用于答复的)。SentRepresentingXYZ属性也是如此。我不认为MailItem.PorpertyAccessor.SetProperty会让您设置所有这些属性。
如果使用赎罪 (我是它的作者)是一个选项,它允许设置所有与发送方相关的属性。
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set rdoMsg = Session.GetMessageFormID(Msg.EntryID)
vSenderEntryId = Session.AddressBook.CreateOneOffEntryID("Joe The Sender", "SMTP", "joe@domain.demo", false, true)
set vSender = Session.AddressBook.GetAddressEntryFromID(vSenderEntryId)
rdoMsg.Sender = vSender
rdoMsg.SentOnBehalfOf = vSender
Msg.Savehttps://stackoverflow.com/questions/53098929
复制相似问题