View Full Version : Prüfung einer E-Mail-Adresse auf Gültigkeit mittels RPG-Programm
Rainer Ross
12-12-16, 13:30
Eine kurze Mail an mich und das Programm ist auf dem Weg rainer_ross@web.de
Rainer Ross
12-12-16, 16:10
Hallo,
die Frage von DKSPROFI war, zu überprüfen, ob eine Mailadresse existiert.
Für das Versenden von Geschäftsmails nutze ich den Mailprovider www.sendgrid.com (http://www.sendgrid.com) - das Versenden wird über einen REST-Service angesprochen, das geht sehr einfach mit HTTPPOSTCLOB.
Interessant ist hier die Auswertungsmöglichkeit für versendete Mails und zwar, wann sie verarbeitet, zugestellt und geöffnet wurden. Vielleicht ist das eine Prüfmöglichkeit.
Herzliche Grüße
Rainer
Wie ist das mit Umlauten in einer Emailadresse?
Moin, mal eben versucht: Freemailer lehnen Umlaute ab bzw. machen ue ae oe draus. Wir lehnen Umlaute aber momentan ab. Morgen prüfen wir aber, ob wir das schnell umsetzen mit den Umlauten. Vieleicht hilft Dir das. mfg DKPROFI
Ich denke, Umlaute in der Mailadresse müssen ähnlich umgesetzt werden wie Umlaute in Web-Adressen.
Bei z.B. www.schön-in-haan.de (http://www.schön-in-haan.de) wird aus dem "ö" irgendwas mit "xn...", deshalb machen wir auch eine eigene Umleitung in www.schoen-in-haan.de.
Moin,
das mit den Umlauten prüfen wir gerade. Aber primär geht es darum, eine gültige Domain Adresse zu prüfen, was mit STRDNSQRY prinzipiel zu 99% funktioniert, aber in Ausnahmefällen aber eben nicht. Hat irgendwas mit dem mx Record zu tun.
Da suchen wir noch nach einer Möglichkeit, die mx Antwort auszuwerten, bzw. eine richtige Anfrage an - wen auch immer - zu stellen.
mfg
DKSPROFI
Kann mir jemand am Beispiel der E-Mail-Adresse max.mustermann@a-xyz.de den Aufruf von STRDNSQRY erläutern? Ich möchte das gern in mein RPG-Programm einbauen, mit dem ich die E-Mail-Adressen einer kompletten Kundendatei überprüfen und das Ergebnis in einem Feld der Dateistruktur zurückschreiben möchte. Ich würde pro Kundensatz ein externes CL-Programm per CALL aufrufen und ggf. das Ergebnis (nur `F` für Fehler) über einen Parameter an das aufrufende RPG-Programm zurückgeben.
Moin,
habe ich so nie hinbekommen, ich habe die funktion getbyhostname im RPG verwendet. Habe ich mal irgendwo im Netz gefunden, bein Interesse kannst Du es kriegen.
mfg
DKSPROFI
So wie die Doku aussieht ist es eher ein Dialogprogramm, dass auch noch extra installiert werden muss.
Die C-Funktion "gethostbyname()" macht dann die DNS-Abfrage und liefert eine HOSTENT-Struktur zurück. Diese muss auch mit "free()" wieder freigegeben werden.
Einfach gehts mit "ping" per CLP und anschließendem RCVMSG für das Ergebnis.
Dabei ist es unerheblich, ob der Ping erfolgreich ist, wenn eine IP gemeldet wird.
Die Anzahl der Pakete kann man auch auf 1 begrenzen.
Rainer Ross
13-12-16, 12:49
ctl-opt main(main) dftactgrp(*no) option(*nounref);
//------------------------------------------------------------------//
// //
// GetHostByName //
// //
//----------------- //
// R.Ross 12.2016 * //
//------------------------------------------------------------------//
// Get Host by Name //
//------------------------------------------------------------------//
dcl-pr gethost pointer extproc('gethostbyname');
##host pointer value options(*string);
end-pr;
//------------------------------------------------------------------//
// Transform Internet Address to a dottet decimal Format //
//------------------------------------------------------------------//
dcl-pr transform pointer extproc('inet_ntoa');
##address uns(10) value;
end-pr;
//------------------------------------------------------------------//
// Array - HostEntry //
//------------------------------------------------------------------//
dcl-s d#host_p pointer;
dcl-ds dshost based(d#host_p);
d#name pointer;
d#alias pointer;
d#addrtyp int(10);
d#length int(10);
d#addrlist pointer;
end-ds;
dcl-s d#addr_p pointer based(d#addrlist);
dcl-s d#hostaddr uns(10) based(d#addr_p);
//------------------------------------------------------------------//
// Variablen //
//------------------------------------------------------------------//
dcl-s h#host char(32);
dcl-s h#ipchar char(15);
dcl-s h#ip uns(10);
//------------------------------------------------------------------//
// Main //
//------------------------------------------------------------------//
dcl-proc main;
h#host = 'www.web.de';
d#host_p = gethost(%trim(h#host));
if d#host_p <> *null;
h#ip = d#hostaddr;
h#ipchar = %str(transform(h#ip));
endif;
end-proc;
//------------------------------------------------------------------//