やらかしましてね
社内用のメールを意図せず社外に送ってしまう人がいましてね。
「気を付けましょう」って通達来たけどクソの役にもたたんので
プログラムで確認をうながすことにしました。
環境
使用するソフトウェア:Outlook(Microsoft Office Standerd 2010)
言語:VBA
機能
社外へのメール送信時にメッセージを出して送信先を確認させる。
できた
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Const FLAG_LOCAL = 1
Const FLAG_EXTDOMAIN = 2
Dim strInHouse As String
Dim strOutSide As String
Dim strMsg As String
Dim iFlag As Integer
Dim objRec As Recipient
Dim strDomain As String
'
strInHouse = ""
strOutSide = ""
iFlag = 0
'ドメインを確認
For Each objRec In Item.Recipients
' ドメイン部を切り出し
strDomain = Mid(objRec.Address, InStr(objRec.Address, "@") + 1)
If strDomain = "local.co.jp" Then
'自社
iFlag = iFlag Or FLAG_LOCAL
strInHouse = strInHouse + objRec.Name
Else
'他社
iFlag = iFlag Or FLAG_EXTDOMAIN
strOutSide = strOutSide + objRec.Address + vbNewLine
End If
Next
'メッセージ表示
Select Case iFlag
Case FLAG_LOCAL
strMsg = strMsg + "社内のみの送信です"
Case FLAG_EXTDOMAIN
strMsg = strMsg + "社外ドメインへの送信です" + vbNewLine
strMsg = strMsg + vbNewLine + "[社外]" + vbNewLine + strOutSide + vbNewLine
Case FLAG_LOCAL Or FLAG_EXTDOMAIN
strMsg = strMsg + "社内および社外への送信です" + vbNewLine
strMsg = strMsg + vbNewLine + "[社内]" + vbNewLine + strInHouse + vbNewLine + "[社外]" + vbNewLine + strOutSide + vbNewLine
End Select
strMsg = strMsg + "[!!!注意!!!]" + vbNewLine + "社外に送信するときは、情報システム規則により" + vbNewLine + "上司を送信先(宛先/CC/BCC)に加える必要があります"
If iFlag <> FLAG_LOCAL Then
Dim rc As VbMsgBoxResult
rc = MsgBox(strMsg, vbOKCancel)
If rc = vbCancel Then
Cancel = True
End If
End If
End Sub
ところで
コードのシンタックス対応にVBAってないんだね