我有以下vba代码,它读取邮箱并向任何发送无效代码的用户发送回复作为对邮箱的回复,但有时会收到运行时错误(Outlook无法识别一个或多个名称)。我的问题是,
以下是我们目前的代码:
Sub ResponseCodeError(Item As Outlook.MailItem)
'If not a valid code then send email to the User
If (Left(Item.Subject, 2) <> "S;" And Left(Item.Subject, 2) <> "N;") Then
Dim outobj, mailobj
Set outobj = CreateObject("Outlook.Application")
Set mailobj = outobj.CreateItem(0)
With mailobj
.To = Item.SenderEmailAddress
.Subject = "Invalid Code"
.Body = "Please use a valid CODE"
.Send
End With
'Move Email to Error Folder
mailboxNameString = "mailboxname"
FolderName = "Error"
Dim olApp As New Outlook.Application
Dim olNameSpace As Outlook.NameSpace
Dim olCurrExplorer As Outlook.Explorer
Dim olCurrSelection As Outlook.Selection
Dim olDestFolder As Outlook.MAPIFolder
Set olNameSpace = olApp.GetNamespace("MAPI")
Set olCurrExplorer = olApp.ActiveExplorer
Set olCurrSelection = olCurrExplorer.Selection
Set olDestFolder = olNameSpace.Folders(mailboxNameString).Folders(FolderName)
Item.Move olDestFolder
End If
Set outobj = Nothing
Set mailobj = Nothing
End Sub
答案 0 :(得分:3)
我曾经遇到同样的错误,我在代码中疯狂搜索了5个小时后就解决了。但它更简单:1个电子邮件地址错误地丢失了域名中的。(点)。
答案 1 :(得分:2)
不是设置To
属性,而是调用MailItem.Recipients.Add
(返回Recipient对象)。调用Recipient.Resolve
- 如果名称无法解析,则返回false。
答案 2 :(得分:1)
问题可能是由于Item的某些属性中的名称,额外字符或空格不正确(特别是To,BCC,CC或集体财产收件人)
也可能是由于在发送邮件之前尚未解析的名称。我不确定,但会认为错误是由于尝试在发送邮件时解析名称而可能由于某些问题而无法解决它们。在发送邮件之前明确解析下面代码这样的名称可以解决问题。
Item.Recipient.ResolveAll可用于在发送邮件之前解析名称。如果所有名称都已成功解析,则返回true。
代码:(Reference)
If Not myRecipients.ResolveAll Then
For Each myRecipient In myRecipients
If Not myRecipient.Resolved Then
MsgBox myRecipient.Name
End If
Next
End If
我测试了代码而没有添加和解析收件人1乘1.(Dmitry建议)
我使用了Item.To,Item.BCC属性。然后使用ResolveAll并仅在所有名称都已解析时发送邮件。
答案 3 :(得分:0)
我刚遇到这个错误;已经工作多年的代码突然触发了&#34; Outlook无法识别一个或多个名称&#34;错误。 我发现收件人是Outlook共享文件夹名称,即。 &#34;我的共享文件夹&#34;无论是Access 2016还是Outlook问题,该名称都无法再解析为其关联的电子邮件地址。将收件人更改为&#34; mysharedfolder@blahblah.com"为我解决了这个问题。
答案 4 :(得分:0)
已解决在我的Outlook中,我有多个联系人使用同一封电子邮件(两家公司由一个联系人/一封电子邮件运行),这造成了问题。我删除了一个联系人,因此Outlook中的联系人列表中没有重复发送电子邮件,现在它可以正常工作了。请注意,我的批次仍向该联系人发送两次电子邮件,该电子邮件是我想要的每个公司的信息。