Outlook邮箱存档文件在哪?很多人在使用时喜欢默认存在C盘,但是遇到重装系统的问题时没有将相关存档文件保存到其他盘就会导致存档丢失,、因些我们最好将邮件存储路径改到其它分区,提......
2021-12-07 487 Outlook,Outlook更改存档文件位置
需求描述
公司里面每天都会有很多邮件,三分之一都是不需要看的,Outlook的过滤功能不错,都可以处理掉。还有些邮件,根据正文或者附件做一下处理自动转发出去就行了。于是上网搜集了一些资料,写个了小程序,共享一下,以后可以参考,也希望对大家有点用处。
实现
废话少说,直接上代码吧。打开Outlook,按Alt+F11打开代码编辑器,输入下面的代码。可能有些兄弟不知道怎么入手,后面会放几个链接做参考。
Sub AutoResponseReceipt(item As MailItem)
Debug.Print ("receive an email")
Dim id As String
Dim SubjectString As String
Dim sender As String
Dim email As Outlook.MailItem
On Error GoTo Err
id = item.EntryID ' 先获取邮件的ID
Set email = Application.Session.GetItemFromID(id)
SubjectString = email.subject ' 邮件主题
sender = email.SenderEmailAddress ' 邮件的发送人地址
Debug.Print ("new email arrivaved: subject is " & SubjectString & " sender is " & sender)
' 校验主题,这里是对主题做过滤,不合适的直接返回不处理
Dim index As Integer
index = InStr(SubjectString, "小票")
If 0 = index Then
index = InStr(SubjectString, "receipt")
If 0 = index Then
Return
End If
End If
' 下面这一段是我自己的一些处理逻辑,调用程序处理附件,
' 然后将程序处理后的结果当做附件转发给另一个人
' 获取附件并执行小票生成程序
Dim PathPrefix As String
PathPrefix = "E:\document\receipt_tool\"
Dim InputFileList As New Collection ' 这个列表存放收到的附件
Dim OutputFileList As New Collection ' 存放程序生成的结果
Dim AttachFile As attachment ' 附件
For Each AttachFile In email.attachments ' email.attachments是所有附件
Debug.Print ("attachment: " & AttachFile.FileName)
Dim InputFile As String
Dim OutputFile As String
InputFile = PathPrefix & AttachFile.FileName
OutputFile = PathPrefix & AttachFile.FileName & ".docx"
Debug.Print ("input file is " & InputFile)
Debug.Print ("output file is " & OutputFile)
AttachFile.SaveAsFile (InputFile) ' 保存附件
Dim cmd As String
cmd = """" & PathPrefix & "receipt.exe" & """" & " " & InputFile & " " & OutputFile
Debug.Print ("command string: " & cmd)
Shell (cmd) ' 执行脚本,生成结果
InputFileList.Add (InputFile)
OutputFileList.Add (OutputFile)
'Kill (InputFile) ' 这里删除的话总会把生成的文件同时删掉
Next
If OutputFileList.Count = 0 Then
Debug.Print ("no attachment")
End If
' 转发邮件
Dim OutMail As Object
Set OutMail = Outlook.Application.CreateItem(olMailItem)
With OutMail
.To = "hnwyllmm@126.com" ' 要转发邮件的收件人地址
.subject = "打印:" & email.subject ' 转发邮件的主题
.Body = "帮忙打印小票,谢谢!" & Chr(10) & email.SenderEmailAddress & Chr(10) & email.SenderName ' 转发邮件的正文
End With
Dim SendAttach As String ' 将程序生成的结果添加到附件中
For i = 1 To OutputFileList.Count
' MsgBox (SendAttach)
SendAttach = OutputFileList(i)
OutMail.attachments.Add (SendAttach)
Next
MsgBox ("send")
OutMail.Send ' 发送邮件
OutMail.Delete ' 删除邮件,没用了
Err:
' 删除生成的文件
For i = 1 To OutputFileList.Count
Kill (OutputFileList(i))
Next
For i = 1 To InputFileList.Count
Kill (InputFileList(i))
Next
email.Delete ' 删除收到的邮件
' 下面几个是释放对象,其实没有也无所谓
Set InputFileList = Nothing
Set OutputFileList = Nothing
Set OutMail = Nothing
End Sub
编辑完保存,在”开始->规则->创建规则”中添加一个过滤规则,在”如何处理该邮件”中选择运行脚本,并选择这个脚本。
标签: VBA自动处理邮件
相关文章
Outlook邮箱存档文件在哪?很多人在使用时喜欢默认存在C盘,但是遇到重装系统的问题时没有将相关存档文件保存到其他盘就会导致存档丢失,、因些我们最好将邮件存储路径改到其它分区,提......
2021-12-07 487 Outlook,Outlook更改存档文件位置
微软正在为Outlook开发一项新功能,可以预测用户在邮件正文中接下来会写些什么。跟Gmail的Smart Composes一样,微软的Outlook也将使用智能技术来建议用户在写电子邮件时可以使用的最佳单词。 这......
2021-06-25 1091 Outlook,Outlook教程,Outlook文本预测功能
Outlook 主页单击File菜单, 左边工具栏,单击Options 选项, 进入新的对话框,在对话框左边工具栏,选择Mail。 在对话框的右边找到 Replies and forwards 子页面 When replying to a message 选项,选择 Atta......
2021-12-07 304 outlook,2016,回复,保留,原来,文件,中的,附件,和,
使用PC端Ooutlook2013,配置网易邮箱收发邮件时,接收邮件成功,发送邮件失败。发送邮件时,出现下图所示报警: 发送测试电子邮件消息:无法发送此邮件。请在帐户属性中验证电子邮件地址。......
2021-12-07 1222 Outlook,Outlook邮件发送失败
在忙到飞起的时候,我们经常会出现邮件发错的情况。邮件发错,还可以挽回。不过能撤回有前提。要和收件人有同一组织内的Exchange账户,而且在收件人还没有阅读前。一切还来得及。 打开......
2021-12-07 383 outlook,outlook快速撤回邮件