gpt4 book ai didi

vba - 如何在移动电子邮件时将 Outlook 电子邮件唯一标识为 MailItem.EntryID 更改

转载 作者:行者123 更新时间:2023-12-04 02:21:30 27 4
gpt4 key购买 nike

我的公司使用一个电子邮件地址供客户发送请求和订单。我们创建了一个将电子邮件导入表的 Access 数据库。该表为每个导入的电子邮件创建它自己的唯一标识符,但不应两次导入电子邮件。该系统正在运行,因为我们只关心进入收件箱的电子邮件,除此之外不需要任何其他东西。

但是,我们现在需要知道该帐户所在的电子邮件池的“流量”、“流量”和“工作量”。进入收件箱的电子邮件被分类,然后移动到一个名为“my_tasks”的文件夹和一个子文件夹,该文件夹名为经理要处理的四个 CSR 之一。然后处理这封电子邮件,CSR 将其移动到另一个名为“已完成”的文件夹下的子文件夹。

因此电子邮件进入收件箱,移至 my_tasks\joeblow 得到处理并移至 Completed\Canada。

目前我有代码遍历文件夹并找到每封电子邮件,获取我们想要存储的字段,然后将它们插入到表中。所有这些都是通过 VBA 代码在 Access 中完成的。

Private Sub ImportEmailItem(objMailItem As Outlook.MailItem)
On Error GoTo ImportEmailItem_Error

' Set up DAO objects
Dim rstMB As DAO.Recordset
Dim dskippedFolderMailCount As Double
Dim strSQLrMB As String

strSQLrMB = "SELECT * FROM tblMailBox WHERE OLID='" & objMailItem.EntryID & "'"

Set rstMB = CurrentDb.OpenRecordset(strSQLrMB)

With rstMB
If Not .BOF And Not .EOF Then

.MoveLast
.MoveFirst
While (Not .EOF)
If .Updatable Then
.Edit
rstMB!Subject = objMailItem.Subject
rstMB!Body = objMailItem.Body

Call subCategory(objMailItem)

rstMB!CSR = IIf(Len(objMailItem.Categories) = 0, "Unassigned", objMailItem.Categories)
rstMB!Importance = objMailItem.Importance
rstMB!Region = objMailItem.Parent
rstMB!DateModified = objMailItem.LastModificationTime
rstMB!FlagCompleted = objMailItem.FlagRequest
rstMB!folder = objMailItem.Parent
rstMB!Path = objMailItem
.Update
End If
.MoveNext
Wend
Else
rstMB.AddNew
rstMB!olid = objMailItem.EntryID
rstMB!ConversationIndex = objMailItem.ConversationIndex
rstMB!ConversationID = objMailItem.ConversationID
rstMB!Conversation = objMailItem.ConversationTopic
rstMB!To = Left(objMailItem.To, 250)
rstMB!CC = Left(objMailItem.CC, 250)
rstMB!Subject = objMailItem.Subject
rstMB!Body = objMailItem.Body

Call subCategory(objMailItem)

rstMB!CSR = IIf(Len(objMailItem.Categories) = 0, "Unassigned", objMailItem.Categories)
rstMB!Importance = objMailItem.Importance
rstMB!From = objMailItem.SenderEmailAddress
rstMB!Region = objMailItem.Parent
rstMB!DateReceived = objMailItem.ReceivedTime
rstMB!DateSent = objMailItem.SentOn
rstMB!DateCreated = objMailItem.CreationTime
rstMB!DateModified = objMailItem.LastModificationTime
rstMB!FlagCompleted = objMailItem.FlagRequest
rstMB!folder = objMailItem.Parent
rstMB.Update
End If
.Close
End With

ImportEmailItem_Exit:
Set rstMB = Nothing
Exit Sub

ImportEmailItem_Error:
Debug.Print Err.Number & " " & Err.Description

Select Case Err.Number
Case 91
Resume Next
Case 3022
Resume Next
Case -2147221233
MsgBox "Customer Care Account Name is incorrect, please enter the Mail box name as seen in your outlook client.", vbOKOnly, "Mail Folder Name Error"
Me.txtMailAccountName.SetFocus
Exit Sub
Case Else
MsgBox "Error #: " & Err.Number & " " & Err.Description '& Chr(13) + Chr(10) & IIf(mail.Subject Is Null, "", mail.Subject) & " " & IIf(mail.ReceivedTime Is Null, "", mail.ReceivedTime)
' DoCmd.RunSQL "INSERT INTO tblImportReport(ImportDate,ImportFolder,ImportResult,ImportEmailCount) VALUES (#" & Now() & "#,'" & mailFolder & "', 'Error " & Err.Number & "', " & dMailCount & ")"
Resume Next 'cmdImportEmail_Exit
End Select

End Sub

有没有办法用一个字段唯一标识一封邮件,不管它是否被移动过?

我知道我可以做些什么来确保我有正确的电子邮件并在我的数据库中获取原始条目。如果没有其他方法,我可以将字段连接在一起形成一个唯一字段,然后获取数据库表的主键字段值。

最佳答案

您可以使用 PR_SEARCH_KEY 属性(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x300B0102)- 它不会在收到消息时更改被感动了。它可以通过 MailItem.PropertyAccessor.GetProperty 访问,但遗憾的是您不能在 Items.Find/Restrict 中使用 PT_BINARY 属性。

您还可以使用 MailItem.UserProperties 设置您自己的命名属性。

更新:

对于 PR_SEARCH_KEY,请参阅 https://msdn.microsoft.com/en-us/library/office/cc815908.aspx .

MaillItem.UserProperties 可以在任何地方使用 - Outlook 对象模型是 Outlook 对象模型,无论它是在 Outlook 内部还是在 Excel 外部使用。请记住,设置用户属性并保存项目将更改其最后修改日期。

如果您想坚持使用 PR_SEARCH_KEY,以便能够对其进行排序,您可能需要查看 Redemption (我是它的作者)-它的RDOFolder.Items .Find/Restrict 方法允许在其查询中使用 PT_BINARY 属性,例如"http://schemas.microsoft.com/mapi/proptag/0x300B0102"= '89F75D48972B384EB2C50266D1541099'

关于vba - 如何在移动电子邮件时将 Outlook 电子邮件唯一标识为 MailItem.EntryID 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28731643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com