Samstag, 24. Oktober 2009

Automatisch BCC abhängig von Email-Konto unter Outlook 2007 versenden als VBA Macro

Ich stand letztes Mal vor dem Problem, dass ich MS Outlook 2007 dazu bringen wollte, abhängig vom Email-Konto automatisch eine "Blind Carbon Copy" (BCC) versenden zu lassen. Die Google Recherche brachte auf Anhieb, dass Carbon Copy (CC) ganz einfach mit "Email-Regeln" unter Outlook realisiert werden konnte. Nur "BCC" wird von MS Outlook als Email-Regel für eine automatische Weiterleitung nicht unterstützt. :-(
Das Lustige daran ist, dass Thunderbird diese Funktion von Haus aus kann. Also gab ich nicht auf und suchte hartnäckig weiter.
Microsoft verlinkt auf der Seite "Office Online - Marketplace" zu einem Outlook Add-in "Auto BCC/CC for Microsoft Outlook". Es scheint, dass dieses Problem Microsoft längst bewußt ist, aber absichtlich nichts dagegen macht. Dieses Add-in kann man 15 Tage lang gratis testen. Danach würde es 29,95 USD kosten. Dieses Add-in hätte meinen Anforderungen exakt entsprochen und funktionierte auf Anhieb. Der Preis hätte mich persönlich nicht abgeschreckt, das Programm zu kaufen. Doch bevor ich wirklich Geld dafür ausgebe, wollte ich halbwegs sicher gehen, dass nicht vielleicht doch Freeware dafür bereits existiert.
Bei meiner Recherche fand ich immer wieder Anleitungen, wie man automatisch BCC unter Outlook mit VBA Macro realisieren konnte. Auf der Seite "Automatische Blindkopien von verschickten Mails in Outlook" erklärt Fritz H. Jörn sehr ausführlich wie man dieses Makro in Outlook einbaut, welches wiederum auf Sue Mosher's aufbaut. Das Macro von Herr Jörn funktionierte auf Anhieb. Das Einzige, was mir noch fehlte, war, dass nur BCC automatisch verschickt werden sollte, wenn Emails von einem bestimmten Email-Konto versendet wurden.
Also habe ich versucht, dieses Macro von Jörn so zu modifizieren, dass der Name des Email-Kontos abgefragt wird. Mir kam sehr gelegen, dass ab Outlook 2007 die Abfrage des Email-Kontonamens bei VBA Macro mit einem einfachen Befehl abfragt werden kann.

Herausgekommen ist folgender Code (funktioniert nur ab MS Outlook 2007):
 Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
' see www.Outlookcode.com/d/code/autobcc.htm#S1
' siehe www.Joern.De/AutoBcc.htm
Dim objRecip As Recipient
Dim strMsg As String
Dim res As Integer
Dim strBcc As String
Dim strAccountName As String ' added by LCY (WWW.LCY.NET)
' #### USER OPTIONS ####
' address for Bcc -- must be SMTP address or resolvable
' to a name in the address book
' Add here your email account name
strBcc = "SOMEONE@SOMEWHERE.COM" '<---CHANGE HERE----
strAccountName = "EMAILACCOUNTNAME" '<---CHANGE HERE---- added by LCY (WWW.LCY.NET)
If strAccountName = Item.SendUsingAccount Then ' added by LCY (WWW.LCY.NET)
On Error Resume Next
Set objRecip = Item.Recipients.Add(strBcc)
' handle case of user canceling Outlook security dialog
If Err = 287 Then
strMsg = "Could not add a Bcc recipient " & _
"because the user said No to the security prompt." & _
" Do you want still to send the message?"
res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
"Security Prompt Cancelled")
If res = vbNo Then
Cancel = True
Else
objRecip.Delete
End If
Err.Clear
Else
objRecip.Type = olBCC
objRecip.Resolve
If Not objRecip.Resolved Then
strMsg = "Could not resolve the Bcc recipient. " & _
"Do you want still to send the message?"
res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
"Could Not Resolve Bcc Recipient")
If res = vbNo Then
Cancel = True
End If
End If
End If
End If ' added by LCY (WWW.LCY.NET)
Set objRecip = Nothing
End Sub
Obiger Source Code wurde mit Hilfe von "codeformatter" formatiert.

Sehr praktisch ist auch die Erklärung von Herrn Jörn, wie man ein selbstgebasteltes Macro durch Eigensignatur mit einem Zertifikat ausstattet, damit nicht immer ein Fenster mit einer Sicherheitsabfrage bei einer höheren Sicherheitstufe kommt.

Ich möchte zusätzlich noch anmerken, dass das obige VBA Macro nicht mal annähernd die Funktionalität und den Komfort des kommerziellen Programmes "Auto BCC/CC for Microsoft Outlook" bietet. Lediglich für mein Vorhaben ist es vollkommen ausreichend. ;-)

Quellen und weiterführende Literatur:

Kommentare:

Anonym hat gesagt…
Der Kommentar wurde von einem Blog-Administrator entfernt.
Anonym hat gesagt…

Ergänzende Frage:
Benötige das Ganze für mehrere Accounts:

Mails gesendet über Account 1 werden als BCC an Account 1 gesendet.

Mails gesendet über Account 2 werden als BCC an Account 2 gesendet.

usw.

Können Sie mir da weiterhelfen?

Vielen Dank im Voraus!

Stefan

Anonym hat gesagt…

Super! Genau das, was ich gebraucht habe. Funktioniert hervorragend (Outlook 2007).

Moe hat gesagt…

Hey vielen dank für diesen Artikel! Hat mir sehr geholfen!