|
本帖最后由 lx105834038 于 2021-8-18 09:50 编辑
经常在邮件中说“见附件”,但是却忘记贴附件,非常的尴尬。
所以找了一段代码提醒自己。
原文参考:http://blog.sina.com.cn/s/blog_660c623c0100timt.html
楼主测试用的系统说明:
OUTLOOK版本:LTSC;
系统版本:Win10;
使用方法:
Alt+F11→在ThisOutlookSession中复制以下代码→保存
提醒:其他版本的建议保存后重启OUTLOOK,或者关闭时提醒宏保存的点击保存。
- Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
- ' 只检查邮件类型
- If TypeName(Item) <> "MailItem" Then Exit Sub
-
- Dim intRet As Integer
- Dim strMsg As String
-
- ' 空主题?
- If Item.Subject = "" Then
- strMsg = "您的邮件缺少主题,返回填写吗?" & vbCrLf & "没有主题的邮件可不礼貌哦~"
- intRet = MsgBox(strMsg, vbYesNo + vbExclamation, "缺少主题")
- If intRet = vbYes Then
- Cancel = True
- Exit Sub
- End If
- End If
-
- ' 忘了帖附件?
- Dim intRes As Integer
- Dim strThismsg As String
- Dim intOldmsgstart As Integer
-
- Dim sSearchStrings(2) As String
- Dim bFoundSearchstring As Boolean
- Dim 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 Then
- If (intOldmsgstart = 0) Or (intOldmsgstart > 0 And intRes < intOldmsgstart) Then
- intOldmsgstart = intRes
- End If
- End If
-
- If intOldmsgstart = 0 Then
- ' 不是Re/Fw的邮件则搜索邮件全文和主题
- strThismsg = Item.Body + " " + Item.Subject
- Else
- ' 是Re/Fw的邮件则只搜索用户写的部分和邮件主题
- strThismsg = Left(Item.Body, intOldmsgstart) + " " + Item.Subject
- End If
-
- ' 搜索邮件正文(和主题)中所有可能提示邮件需要附件的词
- For i = LBound(sSearchStrings) To UBound(sSearchStrings)
- If InStr(LCase(strThismsg), sSearchStrings(i)) > 0 Then
- bFoundSearchstring = True
- Exit For
- End If
- Next i
-
- If bFoundSearchstring Then
- If Item.Attachments.Count = 0 Then
- strMsg = "您的邮件可能缺少附件!" & vbCrLf & "是否仍要发送?"
- intRet = MsgBox(strMsg, vbYesNo + vbDefaultButton2 + vbExclamation, "缺少附件")
- If intRet = vbNo Then
- Cancel = True
- Exit Sub
- End If
- End If
- End If
- End Sub
复制代码 |
|