VBA outlook实战#02--自动分类邮件
来源:互联网 发布:反马赛克软件torch 编辑:程序博客网 时间:2024/06/05 21:12
VBA编程实现邮件自动分类
通过脚本,接收邮件后,自动移动到相应的文件夹。
- 首先在收信箱下创建三个文件夹:HR、IT和Software。
- 其次通过GetFolder(strFolderPath As String)方法获取文件夹对象。
- 然后根据CheckInContact(mailAdress As String)方法获取发信人的部门信息。
- 最后根据部门信息,移动邮件到相应的文件夹。
Sub AutoMove(Item As Outlook.mailItem) Dim var As Variant var = ClassifyMail(Item) Set Item = NothingEnd SubPublic Function ClassifyMail(Item As Outlook.mailItem)'move mail to related folder Dim objApp As Outlook.Application Dim objNS As Outlook.NameSpace Dim srcFolder As Outlook.Folder Dim dstFolder As Outlook.Folder Dim srcFolderPath As String Dim dstFolderPath As String Dim i As Integer On Error GoTo last Set objApp = Application Set objNS = objApp.GetNamespace("MAPI") srcFolderPath = "Outlook\收件箱" Set srcFolder = GetFolder(srcFolderPath) Select Case CheckInContact(Item.SenderEmailAddress) Case 0: dstFolderPath = "Outlook\收件箱\HR" Case 1: dstFolderPath = "Outlook\收件箱\IT" Case 2: dstFolderPath = "Outlook\收件箱\Software" Case Else: GoTo last End Select Set dstFolder = GetFolder(dstFolderPath) Item.Move dstFolderlast: Set objApp = Nothing Set objNS = Nothing Set srcFolder = Nothing Set dstFolder = NothingEnd FunctionPublic Function GetFolder(strFolderPath As String) As MAPIFolder ' strFolderPath needs to be something like ' "Public Folders\All Public Folders\Company\Sales" or ' "Personal Folders\Inbox\My Folder" Dim objApp As Outlook.Application Dim objNS As Outlook.NameSpace Dim colFolders As Outlook.Folders Dim objFolder As Outlook.MAPIFolder Dim arrFolders() As String Dim i As Long On Error Resume Next strFolderPath = Replace(strFolderPath, "/", "\") arrFolders() = Split(strFolderPath, "\") Set objApp = Application Set objNS = objApp.GetNamespace("MAPI") Set objFolder = objNS.Folders.Item(arrFolders(0)) If Not objFolder Is Nothing Then For i = 1 To UBound(arrFolders) Set colFolders = objFolder.Folders Set objFolder = Nothing Set objFolder = colFolders.Item(arrFolders(i)) If objFolder Is Nothing Then Exit For End If Next End If Set GetFolder = objFolder Set colFolders = Nothing Set objNS = Nothing Set objApp = NothingEnd FunctionPublic Function CheckInContact(mailAdress As String) As Integer 'Check this adress whether it is in contactfolder. 'Return ID Dim objApp As Outlook.Application Dim objNS As Outlook.NameSpace Dim contactsFolder As Outlook.Folder Dim contactItem As Outlook.contactItem Dim departmentID As Integer On Error GoTo last departmentID = -3 'Error ID Set objApp = Application Set objNS = objApp.GetNamespace("MAPI") Set contactsFolder = objNS.GetDefaultFolder(olFolderContacts) For Each contactItem In contactsFolder.Items If contactItem.Email1Address = mailAdress Then Select Case contactItem.Department Case "HR" departmentID = 0 Case "IT" departmentID = 1 Case "Software" departmentID = 2 Case Else departmentID = -1 End Select Exit For Else departmentID = -2 'No found ID End If Nextlast: CheckInContact = departmentID Set objApp = Nothing Set objNS = Nothing Set contactsFolder = Nothing Set contactItem = NothingEnd Function
0 0
- VBA outlook实战#02--自动分类邮件
- VBA outlook实战#01--自动回复邮件
- Outlook VBA自动处理邮件
- OutLook 收发邮件时自动分类
- 如何新建Outlook电子邮件规则实现邮件自动分类
- 邮件短信提醒 vba script for outlook
- 利用vba 调用outlook发邮件
- Outlook批量转发邮件 -VBA实现
- VBA自动发送邮件
- 利用outlook自动回复邮件
- OUTLOOK用VBA自动发MAIL
- VBA实现 Outlook 2010 自动密件抄送
- VBA实现outlook自动发信 2
- 利用VBA自动保存outlook附件
- Outlook将不同邮件分类存放
- 使用Outlook对邮件进行分类
- 利用Excel VBA实现Outlook邮件发送实现
- 利用Excel VBA在Outlook邮件创建表格
- iOS核心动画之CALayer(1)
- iOS 文件下载,断点下载总结
- Android日常开发60条经验
- JavaMail
- 高性能网站架构设计之缓存篇(5)- Redis 集群(上)
- VBA outlook实战#02--自动分类邮件
- iOS小明开发笔记(二十五) (NSIndexPath)
- Android线程和线程池(三)--IntentService
- HNOI2007.BZOJ1189.紧急疏散(最大流 && 二分)
- C#-StructLayoutAttribute(结构体布局)
- Volley源码解析<六> HttpStack网络请求
- Caffe: solver及其配置
- 高性能网站架构设计之缓存篇(4)- Redis 主从复制
- CUDA学习笔记--上下文