Entwickler-Ecke
Internet / Netzwerk - Mehrere Anhänge an E-mail
ruewue - Mi 17.11.10 10:45
Titel: Mehrere Anhänge an E-mail
Hallo, habe mal wieder ein kleines Problem.
Ich versende aus einem Programm heraus eine Mail. Dies auch einwandfrei. Nun hänge ich ab und zu eine Datei an. geht auch super. Da nun aber immer wieder mehr als eine Datei angehängt werden muss, habe ich ein Problem. Die Mail wird nicht verschickt, wenn es mehr als 1 Anahng ist.
Hier mein Code dazu:
Delphi-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: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| Begin idSMTP.Host := gsSMTPServer; idSMTP.Username := gsMailUSR; idSMTP.Password := gsMailPWD; idSMTP.Port := 25;
idMessage.From.text := 'Mail-Server'; idMessage.Sender.text := fMail.SendText; idMessage.Recipients.EMailAddresses := fMail.Empf; idMessage.CCList.EMailAddresses := fMail.CC; idMessage.Subject := fMail.Subject;
Body := TStringList.Create; Body.Text := fMail.BodyText; idMessage.Body.Clear; idMessage.Body := Body;
if Trim(fMail.FileName) <> '' then begin if FindFirst(fMail.Path + fMail.FileName, faAnyFile, DirInfo) = 0 then begin repeat idMessage.IsEncoded := true; Anhang := TIdAttachmentFile.Create(idMessage.MessageParts); Anhang.StoredPathName := fMail.Path + DirInfo.Name; Anhang.FileName := DirInfo.Name; Anhang.OpenLoadStream; Anhang.CloseLoadStream; until FindNext(DirInfo) <> 0; end; end; try idSMTP.Connect; idSMTP.Send(idMessage); idSMTP.Disconnect; except on E : Exception do begin if idSMTP.connected then begin try idSMTP.disconnect; except end; end; SendInfo('Fehler beim Mail Versand : ' + E.Message); end; end; end; |
Irgend wie sehe ich den Fehler nicht. Es läuft ja mit einen Anhang auch super. Der Fehler tritt bei
idSMTP.Send(idMessage) auf.
Danke
Rüdiger
Moderiert von
Narses: Code- durch Delphi-Tags ersetztModeriert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 18.11.2010 um 07:15
buster - Mi 17.11.10 11:32
versuch mal
Delphi-Quelltext
1:
| TIdAttachment.Create(idMessage.MessageParts, FileName[i]); |
Dude566 - Mi 17.11.10 12:40
Alternativ könntest du auch einbauen, dass wenn mehrere Dateien angehängt werden, sie in eine Zip gepackt werden und dann verschickt werden.
Wenn der Aufwand nicht zu groß sein sollte.
ruewue - Mi 17.11.10 14:07
@buster : Habe ich schon als erstes Versucht. Nach ein wenig googl fand ich dann die aktuelle version und damit sollte es eigentlich gehen.
@Dude566 : Es wird bei uns in der Fachabteilung eine Mail mit einzelnen TXT Dateien verlangt.
Aber danke für die Hilfe.
platzwart - Mi 17.11.10 14:11
Delphi-Quelltext
1:
| Anhang:= TIdAttachmentFile.Create(idMessage.MessageParts); |
Das mal vor die Repeat-Schleife setzen? Schaut so aus, als ob sonst bei jedem Durchgang das neu gesetzt wird? (oder wird damit nur ein neuer zusätzlicher Anhang erzeugt?)
ruewue - Mi 17.11.10 14:19
Damit soll angeblich immer ein neuer Anhang erzeugt werden. Habe es aber versucht davor zu setzen, keine Änderung.
platzwart - Mi 17.11.10 14:29
Und was für ein Fehler wird angezeigt?
ruewue - Mi 17.11.10 15:40
@Platzward : keiner. Die Exception EIdSMTPReplyError gibt keine Message zurück. Ist leer.
Ich habe jetzt mal getestet, ob alle Dateien auch mit CREAT erzeugt werden. JA. in einer Schleife konnte ich alle auslesen. Es kann nur keine MAil erzeugt werden, sobald mehr als eine enthalten ist.
---
Moderiert von
Narses: Beiträge zusammengefasst---
Hallo zusammen und danke für die Hilfe.
Ich habe das Problem gelöst. Unter den Dateien war eine zu große. Bei mehr als 4 MB wird von unserem SMTP Server nichts übertragen. Dumm nur das Keine Message ausgegeben wurde, sondern nur ein Abbruch.
Aber der Test mit mehreren kleinen Dateien und gesamt nicht größer als 4 MB hat gepklappt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!