Entwickler-Ecke
Sonstiges (Delphi) - Newsletter Programm ABOs aus Listbox lesen?
F.Art - So 03.11.02 18:51
Titel: Newsletter Programm ABOs aus Listbox lesen?
Ich habe mir ein eMail Newsletter geproggt nur das mit dem auslesen der Lsitbox funzt nicht. Ich haffe doch mir kann geholfen werden. Ich bekomme so aber immer die Meldung (List index out of bounds 32231).
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 TForm1.SendenClick(Sender: TObject); var i : word; begin Stop.Enabled:=true; Senden.Enabled:=false; SmtpCli.AuthType := smtpAuthLogin; smtpcli.Host := SMTPServer.Text; smtpcli.Username := Username.Text; smtpcli.Password := Passwort.Text; smtpcli.RcptName.Clear; smtpcli.RcptName.Add(ABO.Text); smtpcli.FromName := AbsenderEmail.Text; smtpcli.HdrFrom := (AbsenderName.Text)+'<'+(AbsenderEmail.Text)+'>'; smtpcli.MailMessage.Add(Nachricht.Text); smtpcli.HdrTo := ABOListe.Items.Strings[i-1]; smtpcli.HdrReplyTo := AbsenderEmail.Text; smtpcli.HdrSubject := Betreff.Text; smtpcli.Open; delay(1000); smtpcli.Mail; delay(1000); smtpcli.Quit; delay(3000); showmessage('Newsletter versendet.'); end; |
Tino - So 03.11.02 19:02
Hi,
bei dieser Zeile
Quelltext
1:
| smtpcli.HdrTo := ABOListe.Items.Strings[i-1]; |
kommt es wohl zu einem Fehler. Denn die Variable I wird in Deinem geposteten Code nicht mit einem gültigen Wert beschrieben.
Gruß
TINO
F.Art - So 03.11.02 19:10
Titel: variable
Ich kenne mich nicht mit variablen so aus.
Wie bekomme ich das hin?
Tino - So 03.11.02 21:08
Du solltest doch eigentlich wissen was Du da geschrieben hast :?
Wenn ich mir die Einrückungen in Deinem Quelltext ansehe scheint es mir so als würde dort eine FOR-NEXT-Schleife fehlen.
Versuch mal folgendes:
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: 27: 28: 29:
| procedure TForm1.SendenClick(Sender: TObject); var i : word; begin Stop.Enabled:=true; Senden.Enabled:=false; For i := 1 To ABOListe.Items.Count Do Begin SmtpCli.AuthType := smtpAuthLogin; smtpcli.Host := SMTPServer.Text; smtpcli.Username := Username.Text; smtpcli.Password := Passwort.Text; smtpcli.RcptName.Clear; smtpcli.RcptName.Add(ABO.Text); smtpcli.FromName := AbsenderEmail.Text; smtpcli.HdrFrom := (AbsenderName.Text)+'<'+(AbsenderEmail.Text)+'>'; smtpcli.MailMessage.Add(Nachricht.Text); smtpcli.HdrTo := ABOListe.Items.Strings[i-1]; smtpcli.HdrReplyTo := AbsenderEmail.Text; smtpcli.HdrSubject := Betreff.Text; smtpcli.Open; delay(1000); smtpcli.Mail; delay(1000); smtpcli.Quit; delay(3000); End; showmessage('Newsletter versendet.'); end; |
F.Art - So 03.11.02 22:25
Titel: ---
Da kommt die selbe Meldung aber wenn ich die eine Zeile (smtpcli.HdrTo := ABOListe.Items.Strings[i-1];) verschiebe direkt mit unter Begin dann sendet er nur 1 email.
Ex0rzist - So 03.11.02 23:03
Hallo F.Art,
ich war mal so frei und habe den Code etwas optimiert.
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: 27: 28: 29: 30:
| procedure TForm1.SendenClick(Sender: TObject); var i : word; begin Stop.Enabled:=true; Senden.Enabled:=false; SmtpCli.AuthType := smtpAuthLogin; smtpcli.Host := SMTPServer.Text; smtpcli.Username := Username.Text; smtpcli.Password := Passwort.Text; smtpcli.RcptName.Clear; smtpcli.RcptName.Add(ABO.Text); smtpcli.FromName := AbsenderEmail.Text; smtpcli.HdrFrom := (AbsenderName.Text)+'<'+ (AbsenderEmail.Text +'>'; smtpcli.MailMessage.Add(Nachricht.Text); smtpcli.HdrReplyTo := AbsenderEmail.Text; smtpcli.HdrSubject := Betreff.Text; For i := 0 To ABOListe.Items.Count-1 Do Begin smtpcli.HdrTo := ABOListe.Items.Strings[i]; smtpcli.Open; sleep(1000); smtpcli.Mail; sleep(1000); smtpcli.Quit; sleep(3000); End; showmessage('Newsletter versendet.'); end; |
Der Fehler (.. out of Bounds) kam wohl zustande, weil I den wert Null hatte und du ein das Item (i-1) der ListBox angesprochen hast. Da "-1" keine gültige Bezeichnung ist, kam es zu einem Fehler.
F.Art - Mo 04.11.02 01:06
Titel: ----
Danke es läuft so.
Da hätte ich noch ne Frage. Ich benutze die ICS Kombonente und habe immer ein delay eingebaut da sonst immer die Meldung kommt component nicht bereit.
Jetzt meine Frage kann man das nicht so machen das er automatisch aim open,mail und dann quit geht wen die kombo dann bereit ist?
Tino - Mo 04.11.02 09:08
| F.Art hat folgendes geschrieben: |
| Da hätte ich noch ne Frage. |
Bitte die Frage in die Sparte
Internet / Netzwerk posten!
Gruß
TINO
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!