如何使用SenderEmailAddress检查收到的电子邮件?

时间:2018-11-01 09:59:18

标签: vba outlook outlook-vba

我有一个循环来检查来自Joe Doe的特定主题的传入电子邮件。该循环有效并保存Joe Doe的附件。

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

2 个答案:

答案 0 :(得分:1)

由于SenderEmailAddressMsg的属性,因此第二段新代码肯定无法工作。

要让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 Doe电子邮件的发件人电子邮件地址列表,以便您可以按预期检查它们。

建议2:

使比较不区分大小写,以便:

If (LCase(Msg.SenderEmailAddress) = "test@noreplay.com") And _
        (Msg.Subject = "Test: Smartsheet") And _
        (Msg.Attachments.Count >= 1) Then

答案 1 :(得分:0)

请记住,Phone_numberMailItem.SenderEmailAddress是Outlook对象模型中的只读属性。还要注意,在MAPI级别上,有大约六种与发件人相关的属性,最重要的是发件人条目ID(即用于回复的属性)。 SentRepresentingXYZ属性的同上。 我认为MailItem.SenderName不会让您设置所有这些属性。

如果使用Redemption,则可以设置所有与发件人相关的属性。

MailItem.PorpertyAccessor.SetProperty