Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Email per AUTH SMTP versenden (https://www.delphipraxis.net/550-email-per-auth-smtp-versenden.html)

webby 7. Aug 2002 16:43


Email per AUTH SMTP versenden
 
Hallo,
wie kann ich eine Email per AUTH SMTP versenden?
(Also das wo man sich per SMTP einloggen kann...)

Die Komponenten sind mir egal, also entweder Indy oder FastNet.

Ich wüsste zwar wie ich das Protokoll selber machen müsste, aber das wäre der letzte Schritt denn ich machen würde. Mit Indy oder FastNet ist es ja eigentlich bequemer :lol:.

sakura 7. Aug 2002 19:18

Hier mal ein kleines Beispiel (Indy 9.x TSMTP Komponente namens SMTP)

Code:
 
  {authentication settings}
  SMTP.AuthenticationType := atLogin; {Simple Login}
  SMTP.Username := 'derNameZumAnmelden';
  SMTP.Password := 'dasDazugehörigePassword';
- Der Rest ist wie normal´ohne AuthSMTP...

...:cat:...

webby 7. Aug 2002 23:48

Ich hab jetzt einen solchen Code im meinem Proggy stehen:
Code:
procedure TForm1.Button2Click(Sender: TObject);
var Email: TIdMessage;
    i: integer;
begin
  Gauge1.MaxValue := ListBox1.Items.Count;
  Gauge1.Progress := 0;
  Gauge1.MaxValue := ListBox1.Items.Count;
  ListBox2.Clear;

  ListBox2.Items.Add('Setze alle Login-Daten...');
  smtp.Host := Edit1.Text;
  smtp.UserId := Edit2.Text;
  smtp.Password := Edit3.Text;

  ListBox2.Items.Add('Kontaktiere zum Mailserver...');
  smtp.Connect;

  Email := TIdMessage.Create(nil);

  ListBox2.Items.Add('Starte zum Emailsenden...');

  for i := 0 to ListBox1.Items.Count-1 do begin
    Email.Recipients.Clear;
    Email.Recipients.Add.Address := ListBox1.Items.Strings[i];
    Email.Subject := Edit6.Text;
    Email.Body.Text := Memo2.Lines.Text;

    smtp.Send(Email);

    ListBox2.Items.Add('Newsletter wurde erfolgreich an "'+ListBox1.Items.Strings[i]+'" versandt.');
    Gauge1.Progress := i+1;
  end;
end;
(AuthenticationType ist im ObjectManager schon gesetzt.)

Jetzt bekomm ich immer folgenden Error:
Zitat:

Socket Error # 11001
Was mach ich jetzt da falsch?

Christian Seehase 8. Aug 2002 00:39

Moin Webby,

Fehler 11001 sagt aus:
Zitat:

Zitat von PSDK Mai 2002
No such host is known.

bzw. WSAHOST_NOT_FOUND

Da wird wohl ein Rechner nicht gefunden.

webby 8. Aug 2002 10:10

Ups, stimmt ich hab ja "smtp.gmx.de" statt "mail.gmx.de" angegeben.:oops:

Naja, ich hab jetzt den Host verbessert aber jetzt kommt trotzdem folgende Fehlermeldung:
Zitat:

553 {mp010-rz3} Only registrated user are allowed to use this system - Dieser Dienst ist eingetragenen Mitgliedern vorbehalten.
Die Logindaten stimmen aber, denn wenn ich den falschen UserID eingebe oder das falsche Passwort kommt:
Zitat:

535 {mp013-rz3} auth failure.
Was mach ich jetzt schon wieder falsch?

sakura 8. Aug 2002 10:17

Auf Anhieb finde ich keinen Fehler - aber schau Dir mal aus den aktuellen Indy-Demos die Demo MailClient2 an, vielleicht findest Du ja noch einen grundlegenden Unterschied. (Notfalls stelle einfach noch einmal den AuthenticationType im Code ein)...

webby 8. Aug 2002 10:39

Ok, ich werde es mir das Demo danach einmal anschauen...

webby 8. Aug 2002 10:44

Hab gerade das Demo doch noch schnell ausprobiert.
Leider kommt da der gleicher Error.:cry:

Ich glaub mir bleibt nichts anderes übrig als selber eine Komponente zu programmieren.
(Ich hab ja schon sowas Programmiert allerdings in PHP und da hat man halt den vorteil das alles Schritt für Schritt abläuft und nicht so "quer" wie in Delphi ;))

Luckie 8. Aug 2002 11:23

Eventuell liegt es auch an GNX. hats du es mal mit Outlook oder etwas ähnlichem probiert?

webby 8. Aug 2002 11:33

Wie schon mal gesagt über PHP klappt es super.
Wenn der Quelltext brauchbar wäre, könnte ich ihn hier posten...

Und über Outlook Express funktionierts auch...

Sharky 8. Aug 2002 11:34

Hai webby,

hast Du auch wirklich die richtigen Zugangsdaten für GMX?
Als Benutzername musst Du keine Kundennummer nehmen!

Ausserdem musst Du in deinem GMX-Profil die Art der SMTP-Sicherheit einstellen (Steht zumindest in der Hilfe von GMX)[/b]

Luckie 8. Aug 2002 11:40

Vollständige E-Mail-Adresse geht auch.

sakura 8. Aug 2002 12:19

Es wird wohl an eine (normalen) Unregelmäßigkeit im Protokoll bei GMX liegen, da ich die Indy Komponenten auch in meiner Software nutze und teilweise auch SMTP Auth nutze - ohne Probleme.

Vielleicht kannst Du etwas im Netz finden, Outlook kommt ja auch mit GMX zurande, also scheint es wohl ein häufigeres Problem zu sein...

...:cat:...

Chewie 8. Aug 2002 14:23

Also ich hab vor einiger Zeit mal über die Fastnet-STMP-Kompo Mails über GMX abgeschickt - das hat funktioniert. Normales SMTP, kein SMTP-Auth. GMX braucht nur normales SMTP, vielleicht lässt es umgekehrt kein SMTP-Auth zu?

webby 8. Aug 2002 20:46

Doch GMX unterstützt AUTH SMTP, weil sonst dieser Code (von mir geschrieben) in PHP auch nicht gehen würde:
Code:
function smtpmail($host, $user, $pass, $emailaddy, $toemail, $subject, $message)
{
  $fp = fsockopen($host, 25);
  if ($fp)
  {
    fgets($fp, 1024);

    fputs($fp, "EHLO $host\r\n");
    fgets($fp, 1024);

    fputs($fp, "AUTH LOGIN\r\n");
    fgets($fp, 1024);

    fputs($fp, base64_encode($user) . "\r\n");
    fgets($fp, 1024);

    fputs($fp, base64_encode($pass) . "\r\n");
    fgets($fp, 1024);

    fputs($fp, "MAIL FROM: $emailaddy\r\n");
    fgets($fp, 1024);

    fputs($fp, "RCPT TO: $toemail\r\n");
    fgets($fp, 1024);

    fputs($fp, "DATA\r\n");
    fgets($fp, 1024);

    fputs($fp, "Subject: $subject\r\n");
    fputs($fp, "FROM: $emailaddy\r\n");
    fputs($fp, "TO: $toemail\r\n\r\n");
    fputs($fp, "$message\r\n");
    fputs($fp, ".\r\n");
    fgets($fp, 1024) ;

    fputs($fp, "QUIT\r\n");
    fgets($fp, 1024);

    fclose($fp);
  }
  else
  {
    echo "[b]Es konnte keine Email versandt werden, bitte wenden Sie sich an den Webmaster![/b]
\n";
  }
}
Und wenn ich ganz normal SMTP verwende muss ich mich erst per POP bei GMX einloggen, sonst geht nichts.

Chewie 8. Aug 2002 21:02

Ich weiß nicht genau, ob GMX die "POP before SMTP"-Methode benutzt, denn ich konnte schon Mails abschicken, als ich Stunden zuvor mal mich zum POP-Server verbunden hab.

webby 9. Aug 2002 09:47

Ich weiß nicht auf wieviel deren TimeOut gesetzt ist. Jedenfalls wird beim (erfolgreichen) POP-Zugriff die IP gespeichert und dann halt für SMTP aufbewahrt...

Sharky 9. Aug 2002 09:50

Du kannst bei GMX einstellen wie es arbeiten soll.

SMTP-Auth
SMTP after POP mit IP prüfung (time out freieinstellbar)
SMTP ohne IP Prüfung

webby 9. Aug 2002 10:20

Ups, das wusste ich noch gar nicht.
Naja, ich geh ja normalerweise nicht auf die GMX Homepage, ich brauch ja nur die Emailadresse für meine Homepage.

Jedenfalls hilft es trotzdem nichts :cry:.

DerKapitalist 26. Dez 2002 01:29

werden in deinem Delphiprogramm deine Zugangsadten auch richtig verschlüsselt? ich würds mal mitsniffen und vergleichen, was dein PHP und was dein Delphiprogramm _wirklich_ durch die leitung schreibt


gruss

webby 26. Dez 2002 10:42

Sorry wegen der dummen Frage die jetzt kommt, aber wie sniffe ich die Indy Komponenten aus? :)
Bin ja in Bezug auf Indy ein Newbie...

DerKapitalist 26. Dez 2002 12:52

das hat grt nichts direkt mti den Indy Komponenten zu tun. Dazu nimmst du einfach ein externes Programm, dass dein Netzwerkdevice "mitschreibt".

Ich verwende dazu "ethereal - Interactively browse network traffic" (http://www.ethereal.com/

wenn jemand ein besseres Tool hat, dass vielleicht bei großen Datenmengen die Selektion erleichtert, wäre das cool, wenn ihr mir das sagen könntet.

aber prinzipiell ist das tool geil...

DerKapitalist 26. Dez 2002 13:50

ahja, nohc zur vorgehensweise:

Einmal einen erfolgreichen Mailsendevorgang mitschreiben und einmal einen mit deinen Indy Komponenten mitschreiben und dann vergleichen, dass du wenigstens mal den fehler findest.

webby 26. Dez 2002 15:47

Achso, ja solche Sniffer kenn ich schon, ich hatte auch einen immer auf meinem altem PC, dort ging er aber leider nie so richtig und auf meinem jetzigen stürtzt das Programm immer ab (nicht nur das, sogar ein BlueScreen) was mich bei Win XP (HE) schon ein bisschen verblüfft, weil ich das noch nicht mal mit meinen eigenen Programmen geschafft habe. :lol:
Ich werde mir mal dieses Programm näher anschauen, doch leider hab ich gesehen, dass es rund 10 MB hat. Ich hab leider noch immer ein 56k Modem... :-/
Ich melde mich, wenn ich es getestet hab... :)

webby 28. Dez 2002 09:08

Ich hab jetzt das Programm, leider stürzt mein Computer auch mit ihm ab. :( Obwohl ich, wie auf der Site angewiesen, die Treiber dafür runtergezogen habe.

----------------------------------------
Yeapy! Mein 100stes Posting in DP!!!

The Re@l 18. Jan 2003 23:48

Hi

Ich hatte dasselbe Problem :? und das Tool hat mir perfect geholfen.
Bei mir Lag es daran das wenn die EMail erstellt wird kein Absendername angegeben wird und GMX verbietet ganz einfach anonym zu verschicken.
Ich hoffe ich konnte helfen.

webby 19. Jan 2003 10:07

Ich hab es mal aus Neugierde mit meinem web.de Account probiert, da ging es... :-/

Ich glaube ich werde in Zukunft auch den dann benutzen...

The Re@l 19. Jan 2003 19:35

@ Webby nur so aus neigierde is das Email Prog zufällig aus dem Buch BHv Einstreiger Seminar?

cya

webby 19. Jan 2003 19:52

Nein, es war Eigenerfindung. :)
Es sollte mal ein Newsletter-Versender werden, was ich aber mehr oder weniger schon aufgegeben habe (weil auch seit Anfang diesen Jahres meine alte Homepage nicht mehr existiert).

Aber wenn es dich interessiert, ich hab ein Buch vom bhv-Verlag "Das Einsteigerseminar - PHP 4". :lol:

Sharky 20. Jan 2003 08:59

Zitat:

Zitat von webby
Nein, es war Eigenerfindung. :)
Es sollte mal ein Newsletter-Versender werden ...

Hai Webby,

nur mal als Anregung: Einen solchen "Newsletter-Versender" würde ich nie über einen SMTP-Server versenden.

Besser ist es via DNS-Abfrage die IP(s) der Mailserver des Empfängers zu ermitteln und dann die eMail direckt dort abzusetzen.

Dann kannst Du nämlich gleich die Meldungen des Servers auswerten (empfänger unbekannt, usw).

webby 20. Jan 2003 16:33

Das wär wirklich besser! :)

Ich hab davon aber noch nie zuvor gehört. Gibt es da genauere Anregungen irgendwo im Netz? Also wie ich zum Beispiel direkt dorthin die Mail versenden kann?!

Sharky 22. Jan 2003 09:56

Zitat:

Zitat von webby
Das wär wirklich besser! :)

Ich hab davon aber noch nie zuvor gehört. Gibt es da genauere Anregungen irgendwo im Netz? Also wie ich zum Beispiel direkt dorthin die Mail versenden kann?!

Sorry, das ich erst heute antworte, ich war zwei Tage auf einer Schulung.

Also, das versenden direckt an den Empfänger Server ist eigentlich ganz einfach....

Du brauchst "nur die IP-Adresse des Mailservers" und diese trägst Du dann bei deiner eMail-Kompo als HOST ein.

Aber wie kommst Du an die IP-Adresse?
Dazu musst du eine DNS-Abfrage machen. Du brauchst also die IP-Adresse eines DNS-Server (aber den bekommst Du ja immer von deinem Provider zugewiesen. Ansonsten gibt es genug bekannte IPs).

Jetzt machst Du folgendes.

Du holst dir aus der eMail Adresse des Empfängers die Domaine.
z.B.: sharky_ffm@gmx.de

Das wäre dann gmx.de

Jetzt musst Du prüfen ob es einen oderer mehrere MX-Einträge (MessageExchange) für diese Domaine gibt.

Wenn ja wird dir von dem DNS-Server entweder die IP oder ein DNS-Name des bzw. der Mail-Server zurückgegeben.

Wenn es keinen MX-Eintrag gibt ist es in der Regel so das Du die Mail an den Typ-A Eintrag der MailDomaine.

Uff.... das ist echt schlecht beschreiben.

Von Synapse gibt es eine DNS-Unit Die alle Funktionen hat die Du benötigst.

Schaue sie dir mal an. Damit habe ich das gelöst. Ich mache das ganze dann in Threads und versende so immer 10 eMail "gleichzeitig".

Bei Frage melde dich einfach noch einmal.

F.Art 22. Jan 2003 10:28

Ich empfehle dir nim die Indy Kombonente damit habe ich auch gute erfolge gehabt.

Delphi-Quellcode:
idMessage.Clear;
idSMTP.AuthenticationType:= atLogIn;
idSMTP.Host                     := Host.Text;
idSMTP.Username                 := Username.Text;
idSMTP.Password                 := Passwort.Text;
idMessage.Sender.Text:= (AbsenderName.Text)+' <'+(AbsenderEmail.Text)+'>';
idMessage.ReplyTo.EMailAddresses:= ReplyTo.Text;
idMessage.Subject := Betreff.Text;
idMessage.Body.Add(Nachricht.Text);
idMessage.Recipients.EMailAddresses:= EmfaengerEmail.Text;
idMessage.From.Address:= AbsenderEmail.Text;
idSMTP.Connect;
idSMTP.Send(idMessage);
idSMTP.Disconnect;

masters001 22. Jan 2003 12:28

@ F.Art kannst bitte nen Beispiel posten wie man mit der Indy Dateianhänge verschickt?

Bei gmx klappt bei mir jetzt alles nachdem ich wie von Sharky beschrieben auf der site SMTP after POP mit IP prüfung eingestellt hab.

Aber ich hab nochn Problem mit freenet, die server sind
pop3.freenet.de und mx.freenet.de so hab ich die jedenfalls bei outlook eingestellt und da funktionierts.
Aber irgendwie gehts bei meinem Programm nicht.

Auf der site hab ich schon nachgeschaut nach einstellungsmöglichkeiten wie die bei gmx, gibts da auch noch irgendwelche tricks um mails über freenet zu verschicken?
Vielen Dank
masters001

F.Art 22. Jan 2003 13:25

bei freenet musst du authlogin machen und username ist deine@email.de und das passwort.

Delphi-Quellcode:
TidAttachment.Create(idMessage.MessageParts,Datei.Text);

webby 22. Jan 2003 14:22

@Sharky: Ich werde, wenn ich wieder mal Zeit habe das genauer nachprüfen. Ich glaube aber ich hab soweit alles verstanden! THX

dopeline 6. Feb 2004 20:47

Re: Email per AUTH SMTP versenden
 
habe mich mal dem code bedient. danke!!!

kann mir jemand sagen, wie ich ne message ausgeben lassen kann, die angibt, ob der mailversand erfolgreich oder nicht erfolgreich abgeschlossen wurde?

gibt es da vielleicht ein onSended oder so?


Gruß, dopeline

nouna 5. Jul 2004 11:11

Re: Email per AUTH SMTP versenden
 
Hallo
könnte mir jemand bitte sagen wie sicher AUTH SMTP (Indy) ist ?? wenn mann weiss dass SMTP sicherheitslücken hat!!!!
:gruebel:

sakura 5. Jul 2004 11:34

Re: Email per AUTH SMTP versenden
 
Zitat:

Zitat von nouna
könnte mir jemand bitte sagen wie sicher AUTH SMTP (Indy) ist ?? wenn mann weiss dass SMTP sicherheitslücken hat!!!!

In AUTH SMTP wird ein Random Schlüssel zusammen mit dem Passwort des Users gehasht. Dieser Code wird dann zur Authentifizierung versandt - und ist recht sicher. Allerdings werden alle anderen Daten immer noch im Klartext versand (SMTP halt).

...:cat:...

nouna 5. Jul 2004 12:31

Re: Email per AUTH SMTP versenden
 
dake für die Antwort :balloon:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz