Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 获取发件人电子邮件地址_Vba_Email_Outlook - Fatal编程技术网

Vba 获取发件人电子邮件地址

Vba 获取发件人电子邮件地址,vba,email,outlook,Vba,Email,Outlook,我有下面的VBA代码,当收到特定主题时,它将自动发送电子邮件 Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim objNS As Outlook.NameSpace Set objNS = GetNamespace("MAPI") Set Items = objNS.GetDefaultFolder(olFolderInbox).Items End Sub Private Sub I

我有下面的VBA代码,当收到特定主题时,它将自动发送电子邮件

Private WithEvents Items As Outlook.Items

Private Sub Application_Startup()
Dim objNS As Outlook.NameSpace
Set objNS = GetNamespace("MAPI")
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub Items_ItemAdd(ByVal item As Object)
If item.Class = olMail Then
    If Left$(item.Subject, 29) = "Hazard Identification Report" Then
        Dim Msg As Outlook.MailItem
        Dim NewForward As Outlook.MailItem
        Dim myFolder As Outlook.MAPIFolder
        Dim olApp As Outlook.Application
        Dim olNS As Outlook.NameSpace

        Set Msg = item
        Set NewForward = Msg.Forward
        Set olApp = Outlook.Application
        Set olNS = olApp.GetNamespace("MAPI")

        strSender = ""
        strSenderName = Sender.GetExchangeUser().PrimarySmtpAddress

        If itm.SenderEmailAddress = "EX" Then
            Set objSender = itm.Sender
            If Not (objSender Is Nothing) Then
                Set objExchUser = Sender.GetExchangeUser()
                If Not (objExchUser Is Nothing) Then
                    strSender = objExchUser.PrimarySmtpAddress
                End If
            End If
        Else
            strSender = itm.SenderEmailAddress
        End If
我在下一行遇到编译/对象错误:

strSenderName = Sender.GetExchangeUser().PrimarySmtpAddress
发件人名称显示为“空”


如何提取发件人的电子邮件地址?

最初在评论中回答

为什么不是msg.SenderEmailAddress


上述公认的答案对我来说并不适用。相反,我使用的是这个(也适用于会议项目):


感谢David Lee在中提供的解决方案。

为什么不
msg.SenderEmailAddress
?谢谢!!!!!它必须是简单的东西@Siddharth Rout如果你能把它作为答案,我会把它标记为完整的。为什么在代码的上半部分有变量
,而它们突然
itm
?而且根本没有
Set Sender=…
行,所以它是空的。在一个完美的世界中,可能是空的,但对于active directory发件人不是空的。
Function GetSenderEmail(oM As Variant)

   Dim oPA As Outlook.PropertyAccessor
   Set oPA = oM.PropertyAccessor

   GetSenderEmail = oPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x5D01001E")

End Function