- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的公司使用一个电子邮件地址供客户发送请求和订单。我们创建了一个将电子邮件导入表的 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/
摘要 我正在尝试添加指向从已移至另一个文件夹的电子邮件创建的任务的超链接。 目标是让任务包含指向已移至“已处理电子邮件”文件夹的 Outlook 项目的超链接。 问题 我不明白如何移动 MailIte
我正在开发将 Outlook 中的 MailItem(我知道它是 MailItem 而不是任何其他类型)拖放到 Access 备忘录字段中的功能。尝试对 MailItem 对象调用 SaveAs。 我
我的公司使用一个电子邮件地址供客户发送请求和订单。我们创建了一个将电子邮件导入表的 Access 数据库。该表为每个导入的电子邮件创建它自己的唯一标识符,但不应两次导入电子邮件。该系统正在运行,因为我
如何通过 EntryID 使用 C# VSTO Outlook 2007 插件打开联系人。 现在我正在查找联系人文件夹中的所有联系人: string entryid = ... Outlook.App
在 Exchange 2007 SP3 上将 RDO 4.8.0.1184 与 Delphi 2006 结合使用 我有以下代码(缩写): Msg := MailSession.GetMessageFr
注意:我使用的是 VBA 和 Office 2007。(我会使用 C#,但项目参数不允许这样做) 我正在尝试在 Outlook 或 API 中找到某种方法,使我能够通过提供 Access 数据库中的
是否有官方支持的方法来转换 Outlook 中的项目 ID REST API成MAPI条目 ID? 我说的是为 http GET 的 json 响应中的项目返回的“Id”字段。在邮箱端点上,如下所示:
我有一个 outlook VSTO 插件,我可以使用以下代码检索日历约会列表: private Items GetAppointmentsInRange(Folder folder, Date
如果我有一个 mapifolder 的 storeid,通过文件夹选择器从 outlook interop 库中选择,我有没有办法获得该文件夹的 smtpaddress? 我知道它在扩展属性中,但我希
如果我有一个 mapifolder 的 storeid,通过文件夹选择器从 outlook interop 库中选择,我有没有办法获得该文件夹的 smtpaddress? 我知道它在扩展属性中,但我希
我是一名优秀的程序员,十分优秀!