MailClose
obj -> MailClose(int1[, var alpha2]) : int
E-Mail versenden
Details
- obj: Mail-Deskriptor
- int1:
- Verarbeitungsart:
_SmtpSendNow_SmtpDiscard
varalpha2: Letzte Antwort des Mailservers bei Fehlern (optional)- Resultat:
intErgebnis - Siehe: Verwandte Befehle ,
MailOpen (),MailData (), Blog
Mit diesem Befehl wird die aufbereitete Mail (obj) entweder abgesendet (int1 = _SmtpSendNow) oder verworfen (int1 = _SmtpDiscard).
Wird beim Aufruf im optionalen Argument (alpha2) eine Variable zusammen mit der Option _SmtpSendNow verwendet, wird bei Auftreten eines Fehlers die zuletzt erhaltene Antwort des Mail-Servers zurückgegeben. Der zurückgegebene Text ist leer, wenn entweder kein Fehler auftrat oder der Fehler nicht auf eine Antwort des Mail-Servers zurückgeht (z. B. Socket-Fehler).
Das Resultat informiert über den Erfolg des Mailversands:
- Fehlerwert: Bedeutung
0(_ErrOk): ok, kein Fehler - Mail wurde versendet8: kein Empfänger bekannt9: Absender fehlt11: Keine Verbindung zum Mailserver12: Verbindungsabbruch beim Übertragen19: interner Fehler- ab 20: SMTP-Fehler:
- 20 - 29: Fehler beim Verbindungsaufbau
23: Service nicht verfügbar27: Sonstiger Fehler- 30 - 39: Fehler bei der Identifizierung
31: Syntaxfehler32: Befehl oder Parameter unbekannt33: Service nicht verfügbar37: Sonstiger Fehler38: Fehler bei der Authentifizierung- 40 - 49: Fehler bei einer Empfangsadresse
41: Syntaxfehler42: Befehl oder Parameter unbekannt43: Service nicht verfügbar44: Zuviele Daten45: Interner Verarbeitungsfehler46: Empfänger unzulässig47: Sonstiger Fehler- 50 - 59: Fehler bei einer Absenderadresse
51: Syntaxfehler53: Service nicht verfügbar54: Zuviele Daten55: Interner Verarbeitungsfehler57: Sonstiger Fehler58: Fehler bei der Authentifizierung - Mailserver erzwingt Verschlüsselung- 60 - 69: Fehler bei der Datenübergabe
61: Syntaxfehler63: Service nicht verfügbar64: Zuviele Daten65: Interner Verarbeitungsfehler66: Anhänge zu groß oder Absenderadresse aus fremder Domain ohne Relay67: Sonstiger Fehler- 70 - 79: Fehler beim Verbindungsabbau
71: Syntaxfehler77: Sonstiger Fehler
Wenn eine EML-Datei geschrieben werden soll (siehe _MailCreateEML), können zusätzlich Fehler für externe Dateioperationen auftreten.
Sollte die Verbindung zum Mailserver fehlschlagen, kann mit einem Telnet-Client überprüft werden, ob ein generelles Problem vorliegt:
telnet <Mailserveradresse> <Port>
EHLO
MAIL FROM:<Absenderadresse>
RCPT TO:<Empfängeradresse>
DATA
Subject: Testnachricht
(Leerzeile, erneut Enter drücken)
Das ist ein Test.
(Leerzeile, erneut Enter drücken)
.
QUIT
Unterstützt der Mailserver kein ESMTP, muss statt EHLO HELO angegeben werden.
Wurden beim Öffnen des Mail-Puffers mit MailOpen () die Angaben für die Authentifizierung über OAuth angegeben, wird eine Anmeldung über dieses Protokoll versucht. Dabei wird zunächst geprüft, ob ein entsprechendes Token im Token Cache vorhanden ist. Die Anmeldung erfolgt dann mit dem Token, der VerzeichnisId und der AnwendungsId.
Ist kein passender Token vorhanden oder wird dieser abgewiesen, muss eine Anmeldung beim Authentifizierungsdienst erfolgen. Dazu wird ein Fenster angezeigt, das die URL und den Benutzer-Code zur Anmeldung enthält. Der Benutzer-Code kann in die Zwischenablage kopiert werden. Nach Bestätigung des Fensters, wird der Standard-Browser mit der zuvor angezeigten URL aufgerufen. Auf der Seite erfolgt die Anmeldung durch den Benutzer. Der Benutzercode kann über die Zwischenablage eingefügt werden.
Wird die Anweisung über einen SOA-Task ausgeführt, wird der Protokolleintrag "OAuth DeviceFlow ..." in die Log-Datei des SOA-Tasks geschrieben. Durch einen Doppelklick auf den Protokolleintrag kann die Anmeldung manuell gestartet werden.
Die Authentifizierung hat ein Timeout von drei Minuten. Erfolgt die Authentifizierung innerhalb dieser Zeitspanne kehrt MailClose() mit dem Resultat _ErrOk (0) zurück, sofern die Authentifizierung erfolgreich war und die Mail versendet wurde. Wird die Zeitspanne überschritten, kehrt die Anweisung mit dem Wert _ErrTimeout (-2) zurück.
Innerhalb der CONZEPT 16 Programmierschnittstelle kann die Anweisung mit Verwendung der OAuth Authentifizierung nur bei Verwendung der erweiterten Programmierschnittstelle (c16_pgxe.dll) verwendet werden.
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Deskriptor ungültig