原文地址:.html
由于签名中的图片也算作是附件,在原文的基础上,将签名中的图片被算作附件这种情况也处理了一下。我用的是Outlook 2010。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)' 只检查邮件类型If TypeName(Item) <> "MailItem" Then Exit SubDim intRet As IntegerDim strMsg As String' 空主题?If Item.Subject = "" ThenstrMsg = "您的邮件缺少主题,返回填写吗?" & vbCrLf & "没有主题的邮件可不礼貌哦~"intRet = MsgBox(strMsg, vbYesNo + vbExclamation, "缺少主题")If intRet = vbYes ThenCancel = TrueExit SubEnd IfEnd If' 忘了帖附件?Dim intRes As IntegerDim strThismsg As StringDim intOldmsgstart As IntegerDim sSearchStrings(2) As StringDim bFoundSearchstring As BooleanDim i As Integer' 指定提示邮件可能需要附件的词bFoundSearchstring = False' 英文邮件sSearchStrings(0) = "attach"sSearchStrings(1) = "enclose"' 中文邮件sSearchStrings(2) = "附件"' 对于转发和回复的邮件,不要到信末附的邮件原文进行搜索' 纯文本格式的原文信头是“Original Message”或“邮件原件”,但HTML格式的回复没有intOldmsgstart = InStr(Item.Body, "发件人:")' 如果在邮件国际选项中打开了“答复和转发时邮件头使用英语”,则应该搜索英文信头' intRes作为临时变量intRes = InStr(Item.Body, "From:")' 对于多次回复和转发又有多种语言的情况,总是选择最上一封If intRes > 0 ThenIf (intOldmsgstart = 0) Or (intOldmsgstart > 0 And intRes < intOldmsgstart) ThenintOldmsgstart = intResEnd IfEnd IfIf intOldmsgstart = 0 Then' 不是Re/Fw的邮件则搜索邮件全文和主题strThismsg = Item.Body + " " + Item.SubjectElse' 是Re/Fw的邮件则只搜索用户写的部分和邮件主题strThismsg = Left(Item.Body, intOldmsgstart) + " " + Item.SubjectEnd If' 搜索邮件正文(和主题)中所有可能提示邮件需要附件的词For i = LBound(sSearchStrings) To UBound(sSearchStrings)If InStr(LCase(strThismsg), sSearchStrings(i)) > 0 ThenbFoundSearchstring = TrueExit ForEnd IfNext iIf bFoundSearchstring Then' 下面的代码是将签名中的图片排除在附件之外,image001.jpg是我机器上签名里图片的文件名,请按实际情况调整Dim bSignature As BooleanFor Each attach In Item.AttachmentsIf attach.FileName = "image001.jpg" ThenbSignature = TrueEnd IfNextIf Item.Attachments.Count = 0 Or (Item.Attachments.Count = 1 And bSignature) ThenstrMsg = "您的邮件可能缺少附件!" & vbCrLf & "是否仍要发送?"intRet = MsgBox(strMsg, vbYesNo + vbDefaultButton2 + vbExclamation, "缺少附件")If intRet = vbNo ThenCancel = TrueExit SubEnd IfEnd IfEnd If
End Sub
以上代码在Outlook 2007下运行通过,2003应该也可以。
使用方法:
(1)打开Outlook;
(2)按Alt + F11打开VBA;
(3)点击左侧树状目录最下面的“ThisOutlookSession”,看到右边出现空白的编辑窗口;
(4)把上面的代码复制到编辑窗口,保存即可。不用重启Outlook.
如果不改变Outlook的默认宏安全性设置,重启之后宏就会被禁用,可以调低宏安全性解决这个问题(Outlook界面的“工具”->“宏”->“安全性”),但这样会使Outlook受到宏病毒的威胁。最好的办法是在Office工具里的“VBA项目数字证书”给自己发一个数字证书,再用这个证书给自己写的宏进行数字签名(在VBA界面下的“工具”->“数字签名”)。进行数字签名之后重启Outlook,Outlook会提示发现新的已签名的宏,再选择“信任该证书签署的宏”(大概是这名字)即可。这样自己写的宏不会再得到警告,其它的宏仍然会受警告,从而避免中毒。
本文发布于:2024-02-02 03:55:45,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681764941196.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |