CDO - SMTP Port 578 - Verbindung herstellen
Schritt-für-Schritt-Anleitung
- 
Verweis aktivieren: Stelle sicher, dass der Verweis auf die "Microsoft CDO for Windows 2000 Library" in Excel aktiviert ist. Gehe dazu zu Entwicklertools > Verweise und aktiviere die entsprechende Bibliothek.
 
- 
VBA-Code anpassen: Verwende den folgenden Beispielcode, um eine E-Mail über den SMTP-Server zu versenden. Achte darauf, die Platzhalter durch deine tatsächlichen Daten zu ersetzen.
Public Sub SMTP()
   Dim iMsg As Object
   Dim iConf As Object
   Dim strbody As String
   Dim Flds As Variant
   Set iMsg = CreateObject("CDO.Message")
   Set iConf = CreateObject("CDO.Configuration")
   iConf.Load -1    ' CDO Source Defaults
   Set Flds = iConf.Fields
   With Flds
       .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
       .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
       .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.XXXXXXXX.com"
       .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 ' Port 587 verwenden
       .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "DOMAIN\USERNAME"
       .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "XXXXXX"
       .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
       .Item("http://schemas.microsoft.com/cdo/configuration/sendtls") = True
       .Update
   End With
   strbody = "Dear Madams," & vbNewLine & _
             "please find attached the test order overview." & vbNewLine & _
             "Kind Regards," & vbNewLine & _
             "test gmbh"
   With iMsg
       Set .Configuration = iConf
       .To = "XXX@XXXX.com"
       .From = "SMTPPOSTFACH@XXXX.com"
       .Subject = "Order"
       .TextBody = strbody
       .Send
   End With
End Sub
 
- 
E-Mail versenden: Führe das Makro aus, um die E-Mail zu senden.
 
Häufige Fehler und Lösungen
- 
Fehlermeldung 80040213: Diese tritt häufig auf, wenn der Port falsch konfiguriert ist. Stelle sicher, dass du den richtigen SMTP-Port verwendest (z.B. 587, nicht 578).
 
- 
Verbindung zum Server nicht möglich: Überprüfe, ob deine Firewall oder dein Antivirus-Programm die Verbindung zum SMTP-Server blockiert.
 
- 
Falsche Anmeldeinformationen: Vergewissere dich, dass der Benutzername und das Passwort korrekt sind.
 
Alternative Methoden
Falls die CDO-Methode nicht funktioniert, kannst du auch die VBA SMTP-Bibliothek verwenden. Diese alternative Methode kann oft stabilere Ergebnisse liefern.
- Lade die 
VBA SMTP-Bibliothek herunter und füge sie deinem Projekt hinzu. 
- 
Nutze den folgenden Code, um eine E-Mail zu versenden:
Sub SendSMTPMail()
   Dim objSMTP As Object
   Set objSMTP = CreateObject("CDO.Message")
   With objSMTP
       .From = "deine@mailadresse.com"
       .To = "empfaenger@mailadresse.com"
       .Subject = "Test E-Mail"
       .TextBody = "Dies ist eine Test E-Mail."
       .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.XXXXXXXX.com"
       .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
       .Configuration.Fields.Update
       .Send
   End With
End Sub
 
Praktische Beispiele
Hier ist ein Beispiel für eine korrekte Konfiguration, die häufig funktioniert:
Public Sub SendEmail()
    Dim iMsg As Object
    Dim iConf As Object
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")
    iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.example.com"
    iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
    iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "USERNAME"
    iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "PASSWORD"
    iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    iConf.Fields.Update
    With iMsg
        Set .Configuration = iConf
        .To = "recipient@example.com"
        .From = "sender@example.com"
        .Subject = "Hello World"
        .TextBody = "This is a test email."
        .Send
    End With
End Sub
Tipps für Profis
- 
Verwende Debugging: Füge Debugging-Informationen in deinen Code ein, um festzustellen, an welcher Stelle der Fehler auftritt.
 
- 
Logging: Implementiere ein Logging-System, um E-Mail-Versendungen zu protokollieren. So kannst du später nachverfolgen, ob die E-Mail tatsächlich gesendet wurde.
 
- 
Sicherheitsüberprüfung: Achte darauf, dass dein Netzwerk und die verwendeten Anmeldeinformationen sicher sind, insbesondere beim Umgang mit sensiblen Daten.
 
FAQ: Häufige Fragen
1. Warum erhalte ich die Fehlermeldung 'Transport konnte keine Verbindung zum Server herstellen'?
Dies kann an einem falschen Port, falschen Anmeldedaten oder einer blockierenden Firewall liegen. Überprüfe alle Einstellungen sorgfältig.
2. Welcher Port sollte für SMTP verwendet werden?
Standardmäßig wird Port 587 für SMTP mit STARTTLS verwendet. Port 578 ist nicht üblich und könnte zu Verbindungsproblemen führen.
3. Wie kann ich die CDO-Konfiguration testen?
Du kannst die Konfiguration testen, indem du einfache Test-E-Mails an verschiedene Adressen sendest und die Antworten überprüfst.