Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CDO - SMTP Port 578 - Transport - keine Verbindung

Forumthread: CDO - SMTP Port 578 - Transport - keine Verbindung

CDO - SMTP Port 578 - Transport - keine Verbindung
28.03.2019 10:44:42
Fragstuff
Guten Morgen zusammen,
ich habe von unserer IT nun SMTP Zugangsdaten bekommen
Benutzername: DOMAIN\USERNAME
Port: 587
Sicherheit: STARTTLS
Authentifizierung: Passwort, normal
und möchte nun aus Excel heraus via der CDO Bibliothek E-Mails über den SMTP Server versenden. Den entsprechenden Verweis:
"Microsoft CDO for Windows 2000 Library"
ist aktiviert.
Habe mich auch bereits in diversen Foren schlau gemacht und komme seit heute morgen um 7 Uhr einfach auf keine Lösung und bin am verzweifeln.
Folgende Fehlermeldung erhalten ich:
"Laufzeitfehler '-2147220973 (80040213)':
Der Transport konnte keine Verbindung zum Server herstellen."

Anbei der VBA-Code:
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") = 578
.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 & vbNewLine & _
"please find attached the test order overview." & vbNewLine & vbNewLine & _
"Kind Regards" & vbNewLine & vbNewLine & _
"test gmbh"
With iMsg
Set .Configuration = iConf
.To = "XXX@XXXX.com"
.CC = ""
.BCC = ""
.From = "SMTPPOSTFACH@XXXX.com"
.Subject = "Order "
.TextBody = strbody
.Send
End With
End Sub

Hat hier jemand noch einen Ratschlag den er mir mit auf den Weg geben könnte ?
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CDO - SMTP Port 578 - Transport - keine Verbindung
28.03.2019 11:06:35
Werner
Hallo,
ich hab jetzt davon nicht wirklich Ahnung, aber was mir auffällt:
Dein Code:
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 578

Laut deiner Beschreibung aber Port 587
Gruß Werner
AW: CDO - SMTP Port 578 - Transport - keine Verbindung
28.03.2019 11:12:37
Fragstuff
Hallo Werner,
du hast Recht, ein Zahlendreher im VBA Code......sollte natürlich Port: 587 sein.
Habe es im VBA-Code nun geändert....es bleibt trotzdem bei dem Fehler.
Anzeige
AW: CDO - SMTP Port 578 - Transport - keine Verbindung
28.03.2019 11:25:21
Fragstuff
Dieser Beitrag ist noch offen
AW: CDO - SMTP Port 578 - Transport - keine Verbindung
28.03.2019 11:52:46
Luschi
Hallo Fragstuff,
Du verwendest 2 Objekte, die sich aber überhaupt nicht kennen:
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Laut Beispielen im I-Net geht es so:

Dim iMsg As Object
Set iMsg= CreateObject("CDO.message")
With iMsg.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'NTLM method
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPServer
.Item("http://schemas.microsoft.com/cdo/configuration/smptserverport") = 587
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Beutzername@domain.TLD"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "GeheimesPW"
.Update
End With
' build email parts
With iMsg
.To = strMailEmpfaenger
.From = strAbsendername & " " & strAbsendermail
.Subject = strBetreff
.TextBody = strText
.send
End With
Set iMsg= Nothing
Gruß von Luschi
aus klein-Paris
Anzeige
AW: CDO - SMTP Port 578 - Transport - keine Verbindung
28.03.2019 12:49:36
Fragstuff
Hallo Luschi,
danke für deine Empfehlung.
Diese habe ich wie folgt umgesetzt, aber leider weiterhin der selbe Fehler:
Public Sub SMTP2()
Dim iMsg As Object
Const strMailEmpfaenger = "XXXXXX@XXXXX.com"
Const strAbsendername = "XXXXXX@XXXXXX.com"
Const strBetreff = "TESTMAIL"
Const strText = "TEST"
Const strSMTPServer = "smtp.XXXXX.com"
Set iMsg = CreateObject("CDO.message")
With iMsg.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'NTLM method
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPServer
.Item("http://schemas.microsoft.com/cdo/configuration/smptserverport") = 587
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'.Item("http://schemas.microsoft.com/cdo/configuration/sendtls") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "DOMAIN\USERNAME"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "GEHEIMES PW"
.Update
End With
' build email parts
With iMsg
.To = strMailEmpfaenger
.From = strAbsendername
.Subject = strBetreff
.TextBody = strText
.Send
End With
Set iMsg = Nothing
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

CDO - SMTP Port 578 - Verbindung herstellen


Schritt-für-Schritt-Anleitung

  1. 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.

  2. 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
  3. 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.

  1. Lade die VBA SMTP-Bibliothek herunter und füge sie deinem Projekt hinzu.
  2. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige