E-Mail mit C++
-
Ich brauche wieder einmal eure Hilfe.
Ich habe mich schon mit dem Versenden via SMTP beschäftigt und bin dabei natürlich auf MIME gestoßen. Nun habe ich bereits erfolgreich eine Mail mit Anhang versenden können, doch habe ich noch Probleme bei dem Authentifizierungs-Verfahren.
Bisher sieht das ganze ungefähr so aus:SendPacket( sock, "HELO lavabit.com\r\n" ); SendPacket( sock, "AUTH LOGIN\r\n" ); SendPacket( sock, "BASE64_ENCODED_USER\r\n" ); SendPacket( sock, "BASE64_ENCODED_PASS\r\n" ); SendPacket( sock, "MAIL FROM:<12345@67890.com>\r\n" ); SendPacket( sock, "RCPT TO:<abcde@fghij.com>\r\n" ); SendPacket( sock, "DATA\r\n" ); SendPacket( sock, szMail ); SendPacket( sock, "QUIT\r\n" );Das Problem besteht nun darin, dass diese Login-Methode nicht gerade von viele Mail-Services erlaubt ist, da sie unverschlüsselt ist.
Ich frage mich nun, welches Verfahren zum Login von den meisten Mail-Services unterstützt wird und wie der entsprechende Code dafür aussieht.MfG,
Sw1tch
-
Und das Mailauthentifizierungsverfahren hat jetzt in welcher Hinsicht mit Standard-C++ zu tun?
-> falsches Forum
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
http://de.wikipedia.org/wiki/SMTP-Auth
http://tools.ietf.org/html/rfc2554Der Server sagt dir, welche AUTH-Verfahren er zulässt. Davon suchst du dir einen aus und meldest dich an. LOGIN und PLAIN sind recht simpel, CRAM-MD5 (Wikipedia) dürfte ein wenig umständlicher werden
-
Danke schonmal für die Links.
Doch nun noch die Frage mit welcher Methode man sich bei einem Großteil der wichtigen (gmail, hotmail, web.de, gmx.net,...) Mail-Services einloggen kann.MfG
-
entweder du wertest die Antwort des Servers nach dem HELO aus oder du probierst einfach mal durch und wartest ab, was der Server antwortet
steht aber alles soweit im rfc2554
-
Das war mir schon klar. Doch ich möchte mich nicht auf einen Mail-Server spezifizieren sondern flexibel sein. Das Verfahren welches ich zur Authentifizierung verwenden werde soll einfach allgemein gebräuchlich sein. D.h. ich sollte alle wichtigen Mail-Server damit ansprechenen können ( gmx, gmail, ... ).
Das PLAIN-Verfahren wird bspw. von nahezu keinem Server mehr erlaubt. SSL bzw. STARTTLS hingegen von sehr vielen, wobei ich hierbei keine Ahnung über die Funktionsweise habe (auch nachdem ich mir die RFC's angesehen habe). Ich hoffe es ist nun etwas deutlicher geworden, was meine Intention ist.MfG
-
nimm doch einach irgendeine existierende implementierung?
-
Wo ist das Problem, anhand der Antwort des Servers die entsprechende AUTH-Methode zu wählen? Nichts anderes machen bestehende Implementierungen
Die Server sind nicht verpflichtet, eine spezifische Methode zu unterstützen. Du kannst auf einen Server stoßen, der nur LOGIN zulässt, während der nächste eine Verschlüsselung verlangt. Also musst du alle Möglichkeiten berücksichtigen
-
Das ist mir klar. Ich möchte nur nicht für jede Mögliche Authentifizierung eine Möglichkeit meinerseits programmieren müssen.
Deshalb frage ich nach der verbreitesten bzw. gebräuchlichsten Methode.
Wäre allerdings nett, wenn jemand mal STARTTLS ein wenig erläutern könnte (im Idealfall einfach mal, was man als Client an den Server senden muss...).MfG
-
Sw1tch schrieb:
Das ist mir klar. Ich möchte nur nicht für jede Mögliche Authentifizierung eine Möglichkeit meinerseits programmieren müssen.
Deshalb frage ich nach der verbreitesten bzw. gebräuchlichsten Methode.
Wäre allerdings nett, wenn jemand mal STARTTLS ein wenig erläutern könnte (im Idealfall einfach mal, was man als Client an den Server senden muss...).Eine TLS-Verbindung aufbauen ist ein wenig komplizierter als ein paar feste Strings zum Server zu schicken und die Antworten zu ignorieren. Ich würde sagen, wenn du nicht selbst herausfinden kannst, wie man das macht, dann wirst du eine TLS-Implementierung erst recht nicht hinbekommen.
Sowas wie TLS implementiert man aber außer in Ausnahmefällen auch nicht selbst. Dafür gibt es fertige Bibliotheken: http://www.google.com/search?q=tls+library
Du wirst übrigens kaum drumherum kommen, auf die Antwort des Servers zu reagieren, schon alleine, um vernünftige Fehlermeldungen ausgeben zu können, wenn der Server dein Authentifizierungsverfahren nicht unterstützt.