【发布时间】:2014-09-07 01:54:07
【问题描述】:
我在尝试获取电子邮件中的其他电子邮件地址列表时遇到了一些问题。目前它得到 SenderName 就好了,但是一旦它移动到 To 它似乎仍然有 SenderName 一遍又一遍.
If _mailItem.SenderName IsNot Nothing Then
Dim tmpResult() As String = _mailItem.SenderName.ToString.Split(";")
For Each name In tmpResult
result = name.Split(",")
If result.Length > 1 Then
employeeAlreadyThere = EIG.FindContactEmailByName(GetSenderSMTPAddress(_mailItem).Trim)
If employeeAlreadyThere = False Then
Call EIG.Search(name.ToString)
End If
End If
Next
End If
现在,正如我为 SenderName 所说的那样,它工作得很好。但是,下面的代码是上面代码之后的代码:
If _mailItem.To IsNot Nothing Then
Dim tmpResult() As String = _mailItem.To.ToString.Split(";")
For Each name In tmpResult
result = name.Split(",")
If result.Length > 1 Then
employeeAlreadyThere = EIG.FindContactEmailByName(GetSenderSMTPAddress(_mailItem).Trim)
If employeeAlreadyThere = False Then
Call EIG.Search(name.ToString)
End If
Else
EIG.lastFirstName = name.Trim().ToString
EIG.emailAddress = EIG.lastFirstName.Replace("-", "_").Replace("/", "").Replace("\", "").Replace(" ", "_").Trim() & "@zzzz.com" 'DL-I/S etwBusiness => DL@zzzz.com
Call EIG.saveImage()
End If
Next
End If
GetSenderSMTPAddress(_mailItem) 代码是这样的:
Private Function GetSenderSMTPAddress(ByVal mail As Outlook.MailItem) As String
Dim PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
If mail Is Nothing Then
Throw New ArgumentNullException()
End If
If mail.SenderEmailType = "EX" Then
Dim mail_sender As Outlook.AddressEntry = mail.Sender
If mail_sender IsNot Nothing Then
If mail_sender.AddressEntryUserType = Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry OrElse mail_sender.AddressEntryUserType = Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry Then
Dim exchUser As Outlook.ExchangeUser = mail_sender.GetExchangeUser()
If exchUser IsNot Nothing Then
Return exchUser.PrimarySmtpAddress
Else
Return Nothing
End If
Else
Return TryCast(mail_sender.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS), String)
End If
Else
Return Nothing
End If
Else
Return mail.SenderEmailAddress
End If
End Function
我正在传递一个 Outlook.MailItem,我知道它总是会产生 SenderName 但这是我不确定如何获取 收件人、抄送和密送。
我试过了:
GetSenderSMTPAddress(_mailItem.To)
这会引发以下警告:
警告 1 将“字符串”转换为 'Microsoft.Office.Interop.Outlook.MailItem'。
所以任何解决此问题的提示都会很棒!
【问题讨论】:
标签: vb.net outlook smtp outlook-addin outlook-2010