| Autor |
Beitrag |
Jimbo
      
Beiträge: 53
|
Verfasst: Mo 03.03.03 15:19
Hallo,
ich muß als Hausaufgabe ein Mailprogramm schreiben und soll mich dabei an die FastNet-Komponenten halten.
POP3 funktioniert einwandfrei, die Mails werden auf der Festplatte gespeichert, etc...
Ich bekomme es aber einfach nicht gebacken eine Mail zu verschicken.
Mein Code:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| SMTP.Host := esmhost.text; SMTP.Port := 25; SMTP.UserID := eusername.text; SMTP.Connect;
SMTP.PostMessage.FromAddress := eusername.text; SMTP.PostMessage.FromName := eusername.text; SMTP.PostMessage.ToAddress.Add(eempfaenger.text); SMTP.PostMessage.Body.Assign(nachricht); SMTP.PostMessage.Subject := ebetreff.text; SMTP.SendMail; SMTP.Disconnect; |
Meine Fehlermeldung:
Die Autentifizierung ist fehgeschlagen
Wo liegt der Fehler?
Gruß
Jimbo
Zuletzt bearbeitet von Jimbo am Di 04.03.03 15:01, insgesamt 1-mal bearbeitet
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Mo 03.03.03 18:22
Titel: HI
Das Senden von EMails sollte durch das ONConnect() Ereignis der SMTP-Komponente erst ausgelöst werden. Ansonsten gibts Schwierigkeiten. So hintereinander gehts nicht.
Zweitens kanns sein, das der Provider SMTP after Pop benutzt, du musst dich also erst mal via Pop verbinden/anmelden und dann ist erst SMTP erlaubt.
ein kleines Demo:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TSendmail.BitBtn1Click(Sender: TObject); var I:Integer; begin Mailer.Host:= Host; Mailer.UserID:= User; for I:=0 to Empfaenger.Items.Count-1 do Mailer.PostMessage.ToAddress.Add(Empfaenger.Items[i]); Mailer.PostMessage.FromAddress:= From; Mailer.PostMessage.FromName:='MeinName'; Mailer.PostMessage.Subject:= Subjekt; Mailer.PostMessage.Date:=DateToStr(now); Mailer.PostMessage.ReplyTo:= from; for I:=0 to Content.Lines.Count-1 do Mailer.PostMessage.Body.Add(Content.Lines[i]); Mailer.Connect; end;
procedure TSendmail.MailerConnect(Sender: TObject); begin Mailer.SendMail; end;
procedure TSendmail.MailerSuccess(Sender: TObject); begin Mailer.Disconnect; end; |
mfg
MSCH
|
|
Jimbo 
      
Beiträge: 53
|
Verfasst: Di 04.03.03 15:08
@ MSCH
ich habe das Ganze jetzt umgeschrieben: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure TForm1.SpeedButton4Click(Sender: TObject); begin meldungen.lines.add('Try to connect'); pop3.UserID := eusername.text; pop3.Password := epass.text; pop3.AttachFilePath := 'attach/'; pop3.Host := ehost.text; pop3.TimeOut := 200000; pop3.connect; if sende = true then begin meldungen.lines.add('Try to connect'); SMTP.Host := esmhost.text; SMTP.Port := 25; SMTP.UserID := eusername.text;
// SMTP.Port := 25; // SMTP.Connect; SMTP.PostMessage.Date:=DateToStr(now); SMTP.PostMessage.FromAddress := eusername.text; SMTP.PostMessage.FromName := eusername.text; SMTP.PostMessage.ReplyTo := eusername.text; SMTP.PostMessage.ToAddress.Add(eempfaenger.text); SMTP.PostMessage.Body.Assign(nachricht.lines); SMTP.PostMessage.Subject := ebetreff.text; SMTP.Connect; sende := false; end; end;
procedure TForm1.SMTPConnect(Sender: TObject); begin SMTP.SendMail; meldungen.lines.add('Connected'); end;
procedure TForm1.SMTPSuccess(Sender: TObject); begin smtp.disconnect; meldungen.lines.add('Nachrich(en) erfolgreich versandt.'); end; |
leider erhalte ich folgende Fehlermeldung: Die Authentifizierung ist fehlgeschlagen.
Was bedeutet das überhaupt?
Wo liegt mein Failer?
Gruß
Jimbo
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Di 04.03.03 16:56
Hallo,
| Jimbo hat folgendes geschrieben: | leider erhalte ich folgende Fehlermeldung: Die Authentifizierung ist fehlgeschlagen.
Was bedeutet das überhaupt?
Wo liegt mein Failer? |
das bedeutet, das der SMTP Server nicht bestätigen kann, das du berechtigt bist über ihn zu senden.
Früher konnte jeder einfach so über jeden Mail-Server senden ohne sich identifizieren zu müssen. Als dann das Internet immer beliebter wurde und somit auch die Spamer immer häufiger auftraten hat man versucht dieses Manko durch das vorherige abrufen der E-Mail auf dem POP3 Server zu beheben. Das ist das ober beschriebende POP vor SMTP. Die war aber immer nur eine notlösung. Mitlerweile ist es schon wieder Jahre her, das der neue SMTP-Standart verabschiedet wurde, welcher eine möglichkeit für SMTP mit Passwort und Username bieten (SMTP Auth oder auch SMTP mit Login). Da der Standart mitlerweile schon älter ist gehen viele Provider in letzter Zeit dazu über diesen auch zu verwenden, ich schätze der über den du senden willst gehört dazu. Ich weiß nciht wie die Fastnetkomponenten heute aussehen, die letzen mit denen ich gearbeitet habe (Delphi 5) unterstützen diese Möglichkeit noch nicht. Wenn sie das heute nopch nicht bieten kann man sie nur als veraltet bezeichnen und sich nach einer alternative unsehen (Indy, ICS, ...?).
Wenn das nicht möglich ist, musst du einen Mailproxy vorschalten, der diese Sicherheitsmechanismen beherscht, sie lokal aber nicht verlangt.
Gruß
Klabautermann
|
|
BungeeBug
      
Beiträge: 901
|
Verfasst: Di 04.03.03 17:09
soweit ich weiss gehört zu den meisten Anmeldungen auch nen PW ... ich konnte in deinem Quelltext nix davon finden ... ich denke mal das das DER Fehler is ...
MfG BungeeBug
|
|
Jimbo 
      
Beiträge: 53
|
Verfasst: Di 04.03.03 20:13
das problem ist, dass ich für die schule an delphi 5 professional gebunden bin.
sollte ich das dann wie mit der konsole machen (telnet) ?
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Di 04.03.03 20:26
Hallo,
wer ist denn dein Provider?
Bei einigen (z.B. GMX) kann man den Sicherheitsmechanismus einstellen. Dann kannst du dein Programm für POP vor SMTP fertigstellen und beschwerst dich bei der Abgabe, das dich die veralteten Komponenten davon abgehalten haben ein Zeitgemäßes Mailprogramm zu schreiben  .
Oder du versuchst deine Lehrer zu überzeugen die Indys dazu zu installieren.
Gruß
Klabautermann
|
|
Jimbo 
      
Beiträge: 53
|
Verfasst: Di 04.03.03 20:57
Hi,
ich hab Web.de, allerdings wird das Prog warscheinlich auch auf meiner Adresse beim Schul-Server getestet werden müssen...
jahmm...ich habs ja mit Pop vor Smtp versucht, aber ich bekomm's einfach nich hin..und eben deshalb würd' ich lieber PROGRAMMIEREN lernen...und nicht das Komponenten-Anwenden...dann könnte ich jetzt nämlich alles so laufen lassen, wie's zeitgemäß ist...
erstmal muß ich das prog für meinen Account bei Web.de zum laufen bringen, aber da kommt halt auch bei POP vor SMTP der Fehler und mit der Komponente kann ich kein Passwort festlegen...............
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Di 04.03.03 21:24
| Jimbo hat folgendes geschrieben: |
und eben deshalb würd' ich lieber PROGRAMMIEREN lernen...und nicht das Komponenten-Anwenden
|
Also, dann müsstest du dich erst mal mit den verschiedensten Protokollen auseinandersetzen...Viel Spass dabei! 
|
|
Jimbo 
      
Beiträge: 53
|
Verfasst: Di 04.03.03 21:43
gut möglich, aber ich meine, dass man mit den komponenten nicht weit kommen kann.
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 05.03.03 13:21
Hallo,
Komponenten erleichtern das Arbeiten ungemein. Aber nur, weil sie einem die Arbeit abnehmen nicht weil sie etwas machen was man nicht auch selbst ereichenen könnte.
Aber es ist schon klar, das man sich dann auch an den Hersteller bindet und eben nur das machen kann was dieser anbietet.
Leider hast du wohl im moment keine Wahl, es sei denn du möchtest tatsächlich die Komunikation von Hand implementieren. Das sollte Machbar sein da SMTP ein recht kleiner Standart ist. Dennoch bedeutet es eine Menge mehr Arbeit.
Gruß
Klabautermann
|
|