![]() |
IdSMTP und bcc Fehler
Hallo,
ich versende einen News Letter mit Indy (IdMessage und IdSMTP) mittels bcc. Das Ganze funktionierte auch mit ein paar Test-Mailadressen. Wenn ich nun die Procedure mit allen Adressen, an die die Mail verschickt werden soll starte, kommt es zu folgender Fehlermeldung:
Delphi-Quellcode:
In bcc werden an die 100 Mailadressen eingefügt. Irgendeine löst die genannte Fehlermeldung aus.
Im Projekt .... ist eine Exception der Klasse EIdProtocolReplyError aufgetreten.
Meldung: '5.52 <keine>: Recipient adress rejected: need fully-qualified adress'. Prozess wurde angehalten ... Gibt es eine Möglichkeit, zu prüfen, bei welcher Adresse es zu der Fehlermeldung kommt oder gibt es eine Möglichkeit, daß die "falsche" eMailadresse in der bcc-Liste einfach übersprungen wird? Vielen Dank. Josef |
AW: IdSMTP und bcc Fehler
Guten Abend,
Du könntest vor dem Einfügen überprüfen ob die Adresse in Ordnung ist. z.B. mit einem ![]() Wenn die Adressen in Ordnung sind - aber die Domain eventuell nicht existiert und deshalb vom Mailserver nicht behandelt wird, dann wird es schwieriger. Auf den Mailserver hast Du keinen Zugriff? Grüße Klaus |
AW: IdSMTP und bcc Fehler
Hallo,
vielen Dank für die Antwort. Zugriff auf den Mailserver??? Was meinst du damit? Ich benutze den Mailserver meines Hosters. Da was zu manipulieren wird nicht gehen. Und ich hab den ganzen Nachmittag mit Googlen verbracht. So wie es ausschaut, funktioniert das mit meiner INDY Version nicht (INDY 9). In INDY 10 gibt es ein entsprechendes Event beim Versand. In diesem Event kann man den "Fehler" dann abfangen und reagieren, also abbrechen oder weitermachen, usw. Ich häng immer noch an meinen Delphi Versionen 6 und 7. Ich hab zwar mal versucht Indy 10 zu intallieren, aber es hagelte nichts als Fehlermeldungen. Ich bleib deswegen bei INDY 9. Mein Problem hab ich jetzt dadurch gelöst, daß ich keine bcc Liste fülle, sondern an alle Empfänger in meiner Liste mittels einer Schleife eine normale EMails schicke. Die Exception ist in der while Schleife und bei Fehlern wird die Liste weiter abgearbeitet. Evtl. Fehler sehe ich dann in meinem EMailpostfach oder in einem Memofeld und kann die Adressen korrigieren oder aus der Liste streichen. Ist zwar etwas umständlich aber was soll's. Hier noch meine Prozedur:
Delphi-Quellcode:
Ciao
fDMIMKER.ZQAdressenmailbcc.First;
while not fDMIMKER.ZQAdressenmailbcc.Eof do begin try IdMessage1.ContentType := 'text/html'; IdSMTP1.AuthenticationType := atlogin; IdMessage1.Body := sdbMemo1.Lines; IdMessage1.From.Text := fDMIMKER.ZQMailverbindungMAILMAILADRESSE.AsString; IdMessage1.From.Address := fdmimker.ZQMailverbindungMAILMAILADRESSE.AsString; IdMessage1.subject := sdbedit1.text; IdMessage1.Recipients.EMailAddresses := fDMIMKER.ZQAdressenmailbccADRMAILBCCEMPFAENGER.AsString; IdMessage1.Priority := mpNormal; Application.ProcessMessages; IdSMTP1.Username := fDMIMKER.ZQMailverbindungMAILMAILADRESSE.AsString; IdSMTP1.Password := fdmimker.ZQMailverbindungMAILPASSWORT.AsString; IdSMTP1.Host := fdmimker.ZQMailverbindungMAILAUSGANGSSERVER.AsString; IdSMTP1.Connect; Application.ProcessMessages; IdSMTP1.Send(IdMessage1); Application.ProcessMessages; except on E: Exception do begin sMemo1.Text:= sMemo1.Text + 'Fehler bei EMailadresse: '+fdmimker.ZQAdressenmailbccADRMAILBCCEMPFAENGER.AsString+#10#13+e.Message+#10#13; end; end; fDMIMKER.ZQAdressenmailbcc.Next; IdSMTP1.Disconnect; end; Josef |
AW: IdSMTP und bcc Fehler
Nun dann hast du doch auch die fehlerhaften mail-Adressen.
Aber was hindert dich, die mail-Adressen vorher zu prüfen und die schlechten zu filtern? |
AW: IdSMTP und bcc Fehler
Hallo,
diese Mailliste ist ja nicht statisch, sondern sie verändert sich laufend. Soll heißen neue Adressen kommen hinzu, alte, die funktionierten können aufgegeben werden oder was auch immer. Ich muß also immer erst Mal "normal", also jede EMailadresse einzeln, abschicken, um Bescheid zu wissen. Und wenn die Mail dann schon abgeschickt ist, brauch ich anschließend nicht nochmal mit bcc zu verschicken. Ciao Josef |
AW: IdSMTP und bcc Fehler
Also wenn der Fehler "need fully qualified address" ist, dann entsprechen die mail-Adressen nicht dem Standard und können auch vorher rausgefiltert werden.
Hast du mal eine solche mail-Adresse als Beispiel da? Alle Buchstaben kannst du ja mit x ersetzen und alle Ziffern mit 0. |
AW: IdSMTP und bcc Fehler
Hallo,
danke Dir, daß Du Dich meines Problems annimmst. Beim Abschicken (IdSMTP1.Send(IdMessage1) einzeln mittels while schleife passiert folgendes: "Falsche" Emailaddressen werden auch abgeschickt. In diesem Fall kommt eine Returnmessage vom Server in mein EMailpostfach. Diese "falschen" EMailadressen lösen keine Exception aus. Ich kann sie aber eben mit dieser Returnmessage korrigieren oder streichen. Aber eine Adresse löst eine Exception aus. Die entsprechende Fehlermeldung siehe ganz oben im Eingangspost wird in mein Memofeld eingetragen. Bei der Exceptionbehandlung hab ich auch noch stehen, daß der Datensatz mit in das Memofeld geschrieben wird. Das passiert aber nicht. Ich weiß also immer noch nicht, wer diesen Fehler auslöst. Du schreibst: Zitat:
Danke. Josef |
AW: IdSMTP und bcc Fehler
Ok, da du uns die verfremdeten Adressen nicht geben möchtest ...
versuche doch mal die Adressen nicht komplett, sondern in Blöcken zu versenden (z.B. max 10 Stück) Da wo der Fehler auftaucht ist dann die fehlerhafte Adresse. Es kann natürlich auch sein, dass die BCC Liste zu lang wird ... alles ist möglich ... und dann wirst du die auf jeden Fall eben kürzen müssen. |
AW: IdSMTP und bcc Fehler
Zitat:
Delphi-Quellcode:
IdMessage1.Recipients.EMailAddresses := fDMIMKER.ZQAdressenmailbccADRMAILBCCEMPFAENGER.AsString;
|
AW: IdSMTP und bcc Fehler
Hallo,
blöd.... Da kommt was durcheinander. Die Behlszeile, die Du zitierst, stammt aus der Procedure mit der ich die Mails einzeln durch eine While schleife verschicke. Davor wollte ich eben mit bcc verschicken und da wird der ganze Versand eben wegen dieser Exception abgebrochen. Mit bcc sah die Procedure so aus:
Delphi-Quellcode:
Emailadressenbeispiele kann ich schon geben:
//bcc Part
fDMIMKER.ZQAdressenmailbcc.First; while not fDMIMKER.ZQAdressenmailbcc.Eof do begin IdMessage1.BccList.Add.Address := fdmimker.ZQAdressenmailbccADRMAILBCCEMPFAENGER.AsString; fDMIMKER.ZQAdressenmailbcc.Next; end; Die erzeugte bcc Liste sieht so aus :
Code:
Es sind weit über 100 momentan.
'info@josefkoller.de,bubiii@web.de, baerbelmeier@t-online.de, ....usw'.
Der Vorteil mit bcc zu verschicken wäre, daß nur eine EMail versandt wird. Würde ruckzuck gehen. Bei meiner jetzigen Methode werden über 100 Mails verschickt und das dauert. Ich bräucht halt irgendwas, um vor dem Send schon zu prüfen, welche den die Exception auslöst. Und wenn's an der Anzahl der Adressen liegt, müßt ich auch irgendwie wissen, wieviele ich denn reinpacken kann. Ich kann schlecht blockweise mit den vorhandenen Wirkadressen rumhantieren. Die würden sich wundern, wenn dauernd Mails von mir bei Ihnen auftauchen oder auch nicht. Ich könnt die bcc Liste auch 100 mal mit meiner eigenen Adresse füllen. Da käm ich dann dahinter, ob es an der Anzahl der Einträge liegt. Aber wenn die Exception durch eine "falsche" Wirkemailadresse verursacht wird .... Irgendwas zum Prüfen vor dem Send, daß wär's. danke nochmal. Josef |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz