gluehbirne
Goto Top

Massen E-Mail-Versand aus VBA Excel - Outlook Sicherheitsmeldung

Hallo Community!

Ich bin recht frisch in der VBA-Code Erstellung, deshalb entschuldigt diese blöden Fragen.

Ich habe ein Tool geschrieben, welches eine Massenmail Versand über Outlook aus Excel ermöglichen soll. Dies funktioniert eigentlich ganz wunderbar bis auf den Befehl .send - der soll ja die Mail automatisch in den Postausgang legen. Jedoch kommt immer die Sicherheitsmeldung in Outlook, dass ein Programm versucht eine Mail zu verschicken.

Da mein Tool eine Schleife mit etwa 450 Mails raushaut, ist diese Meldung absolut nervig und muss irgendwie abgeschalten / umgangen werden. Ich habe schon stundenkang gegoogelt und komme auf keinen grünen Zweig. Im Moment ist es so, dass ich mir mit SendKeys behelfe - was aber nicht ganz zuverlässig sein soll. Deshalb möchte ich gerne einen anderen Weg gehen.

Ein Forum hat mich auf die Idee gebracht das Tool digital zu signieren mit selfcert.exe . Angeblich kommt aber die Meldung dann immernoch. Hat jemand damit Erfahrungen?

Ein anderer Thread brachte mich auch die redemption.dll. Jedoch ist hier wiederum das Problem, dass die .dll auf jedem PC installiert sein muss, welcher mit der excel-Datei arbeiten will. Da ich verschiedene Aussagen im Netz fnde, möchte ich einfach euch fragen, ob Ihr Erfahrungen damit schon machen konnten und mir weiterhelfen könnt.

Ich habe bereits rumgelesen was die redemption.dll angeht - aber ich bin im Moment scheinbar zu blöd dazu, zu verstehen, wie ich die einbaue bzw. ob es wirklich mein Problem löst.

vielen Dank für eure Bemühungen schon im Voraus

gluehbirne

Content-ID: 232133

Url: https://administrator.de/contentid/232133

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

colinardo
colinardo 09.03.2014, aktualisiert am 08.09.2014 um 11:38:09 Uhr
Goto Top
Hallo gluehbirne, Willkommen im Forum!
Ab Outlook 2007 kannst du die Warnung im Outlook-Sicherheitscenter deaktivieren:
Wichtig: Diese Einstellung lässt sich nur verändern wenn man Outlook als Administrator startet (Rechtsklick auf Outlook => "Als Administrator starten").

Alternativ sende die Mails via CDO-ComObject ganz ohne Outlook aus Excel heraus.

Grüße Uwe
gluehbirne
gluehbirne 10.03.2014 um 20:24:19 Uhr
Goto Top
Hi!

Ich kann in unserem Outlook die Sicherheitseinstellungen nicht ändern - offensichtlich per Policy bzw. Admin hat gesperrt.

Mein Chef hat aber heute schon gesagt, dass er sich wünscht bis Ende der Woche meinen VBA-Excel Mailer mit eingefügter Grafik haben zu wollen....na prima. Gegoogelt wieder seit Stunden und die MAPI-Funktion gefunden. Leider finde ich aber in meinem Excel 2013 keine Möglichkeit einen entsprechenden Verweis zu machen. Daran ist es übrigens auch mit der CDO gescheitert. Gibt es irgendwo eine gute Anleitung dafür? (for dummies offensichtlich :-P )

Diesen Code wollte ich entsprechend einarbeiten:

  
  ' create new Outlook MailItem  
  Set objApp = CreateObject("Outlook.Application")  
  Set l_Msg = objApp.CreateItem(olMailItem)
  ' add graphic as attachment to Outlook message  
  ' change path to graphic as needed  
  Set colAttach = l_Msg.Attachments
  Set l_Attach = colAttach.Add("c:\test\graphic.jpg")  
  l_Msg.Close olSave
  strEntryID = l_Msg.EntryID
  Set l_Msg = Nothing
  ' *** POSITION CRITICAL *** you must dereference the  
  ' attachment objects before changing their properties  
  ' via CDO  
  Set colAttach = Nothing
  Set l_Attach = Nothing
    
  ' initialize CDO session   
  On Error Resume Next
  Set oSession = CreateObject("MAPI.Session")  
  oSession.Logon "", "", False, False  
  
  ' get the message created earlier   
  Set oMsg = oSession.GetMessage(strEntryID)
  ' set properties of the attached graphic that make  
  ' it embedded and give it an ID for use in an <IMG> tag  
  Set oAttachs = oMsg.Attachments
  Set oAttach = oAttachs.Item(1)
  Set colFields = oAttach.Fields
  Set oField = colFields.Add(CdoPR_ATTACH_MIME_TAG, "image/jpeg")  
  Set oField = colFields.Add(&H3712001E, "myident")  
  oMsg.Fields.Add "{0820060000000000C000000000000046}0x8514", 11, True  
  oMsg.Update
  
  ' get the Outlook MailItem again  
  Set l_Msg = objApp.GetNamespace("MAPI").GetItemFromID(strEntryID)  
  ' add HTML content -- the <IMG> tag  
  l_Msg.HTMLBody = "<IMG align=baseline border=0 hspace=0 src=cid:myident>"  
  l_Msg.Close (olSave)
  l_Msg.Display
  
  ' clean up objects  
  Set oField = Nothing
  Set colFields = Nothing
  Set oMsg = Nothing
  oSession.Logoff
  Set oSession = Nothing
  Set objApp = Nothing
  Set l_Msg = Nothing
End Sub
colinardo
colinardo 11.03.2014 aktualisiert um 08:36:09 Uhr
Goto Top
Eine einfache Mail mit Attachment kannst du mit folgendem Code verschicken. Hierbei sind aber die Parameter an den Mailserver den Ihr verwendet anzupassen. Im Beispiel wird ein SMTP-Server mit TLS auf Port 25 angesprochen (Hinweis CDO kann TLS nur auf auf Port 25)
Const cdoSendUsingPickup = 1
Const cdoSendUsingPort = 2 'Must use this to use Delivery Notification  
Const cdoAnonymous = 0
Const cdoBasic = 1 ' clear text  
Const cdoNTLM = 2 'NTLM  

' Mailserver Konfiguration  
Const strUsername = "[USERNAME]"  
Const strPassword = "[PASSWORD]"  
Const strSMTPServer = "smtp.mailserver.de"  
' SSL benutzen JA/EIN (ACHTUNG CDO unterstützt nur TLS auf Port 25)  
Const boolUseSSL = True

'Nachrichtendetails festlegen  
strFrom = "absender@mail.de"  
strTo = "empfaenger@mail.de"  
strSubject = "Test"  
strTextbody = "Das ist ein einfacher Text als Inhalt der Mail"  
strHTMLBody = "<h3>Ich bin ein HTML-Body</h3>"  
arrAttachments = Array("C:\Temp\computers.txt","C:\Temp\computers.txt")  

'----------------------------  
Set iMsg = CreateObject("CDO.Message")  
Set objConf = CreateObject("CDO.Configuration")  
set objFlds = objConf.Fields
With objFlds
  .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort  
  .Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = boolUseSSL  
  .Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPServer  
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic  
  .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUsername  
  .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPassword  
  .Update
End With
With iMsg
	Set .configuration = objConf
	.To = strTo
	.From = strFrom
	.Subject = strSubject
	.TextBody = strTextbody
	.HTMLBody = strHTMLBody
	For Each att In arrAttachments
		.AddAttachment att
	Next
End With
' Nachricht verschicken  
iMsg.Send
MsgBox "Nachricht wurde verschickt!"  
set iMsg = Nothing
Set objConf = Nothing
Set objFlds = Nothing

steht aber auch alles schön beschrieben unter obigen Link. Man muss es nur lesen.

Mein Chef hat aber heute schon gesagt, dass er sich wünscht bis Ende der Woche meinen VBA-Excel Mailer mit eingefügter Grafik haben zu wollen....
Dann präsentiere Ihm erst Wasserdichte Lösungen dann hast du keinen Stress, oder sag Ihm die Sicherheitseinstellung müssen dafür angepasst werden...

Grüße Uwe