Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   E-Mail werden wiederholt (https://www.delphipraxis.net/188448-e-mail-werden-wiederholt.html)

HPB 4. Mär 2016 16:17

E-Mail werden wiederholt
 
Guten Tag Delphianer,
ich benutze zum Senden von E-Mails den folgenden Code:
Delphi-Quellcode:
  Screen.Cursor := crHourGlass;
  pMailBetreff := '';

  IDAttachmentList := TStringList.Create;
  IDAttachmentList.Clear;
  idmsgSendeMail.Clear;

  // ---------------------------------
  idmsgSendeMail.MessageParts.Clear;
  idmsgSendeMail.Date := Now;
  idmsgSendeMail.ContentType := 'text/plain; CharSet = UTF-8';
  idmsgSendeMail.ContentTransferEncoding := '8bit';

  idmsgSendeMail.From.Text := VonEMailAdresse;
  idmsgSendeMail.Sender.Text := VonEMailAdresse;

  if lstAttachments.Count > 0 then
  begin
    IDAttachmentList.CommaText := lstAttachments.Items.Text;
    for i := 0 to IDAttachmentList.Count - 1 do
    begin
      idmsgSendeMail.IsEncoded := True;
      IDAttachment := TIdAttachmentFile.Create(idmsgSendeMail.MessageParts,
        IDAttachmentList.Strings[i]);
      IDAttachment.FileName := ExtractFileName(IDAttachmentList.Strings[i]);
      IDAttachment.ContentType := 'application/octet-stream';
      IDAttachment.OpenLoadStream;
      IDAttachment.CloseLoadStream;
    end;
  end;
  IDAttachmentList.Free;

  for pAdressen := 1 to advstrngrdEMail.RowCount - 1 do
  begin
    pMailAdresse := '';
    advstrngrdEMail.SelectedRow[pAdressen];
    pMailAdresse := advstrngrdEMail.Cells[2, pAdressen];
    if pMailAdresse <> '' then
    begin
      idmsgSendeMail.Recipients.EMailAddresses := pMailAdresse;
      idmsgSendeMail.Subject := edtMailBetreff.Text;
      idmsgSendeMail.Body.Append(redtMailBody.Text);

      // Mail senden
      idsmtp1.Send(idmsgSendeMail);
    end;
  end;
Nun werden aber die Bodytexte bei den anderen Empfängern wiederholt.
D. H. wenn ich an 3 E-Mailempfängern die gleiche E-Mail sende, wird
der Body Text bei den anderen Empfängern mehrmals übermittelt!
Sind Anlagen vorhanden kann es passieren, das einem die Anhänge vollzählig sind
aber bei dem anderen Empfänger gar nicht übermittelt werden.
Als Anhänge kommen PNG, PDF oder sonstiges in Frage. Also dsa Übliche.
Beim Testen (mit F9) wird keine Fehlermeldung ausgegeben.
Ich finde diesen Fehler nicht!
Mit Gruß HPB

Sir Rufo 4. Mär 2016 18:56

AW: E-Mail werden wiederholt
 
Du fügst den Body-Text für jeden Empfänger immer wieder an:
Delphi-Quellcode:
idmsgSendeMail.Body.Append(redtMailBody.Text);
.

Den alten Body-Text solltest du evtl. vorher entfernen ;)

Sir Rufo 4. Mär 2016 19:00

AW: E-Mail werden wiederholt
 
Ich würde das Versenden von Emails etwas anders organisieren (s. http://www.delphipraxis.net/1318435-post12.html)

HPB 5. Mär 2016 08:53

AW: E-Mail werden wiederholt
 
Vielen Dank für Deine Hilfe Sir Rufo.
Habe ich total übersehen das ich in der Schleife den Bodytext immer wiederhole.
Muss wohl schon Nacht gewesen ein.
Nur eines ist jetzt aufgetreten:
Wenn ich E-Mails ohne Anhang versende kommen die E-Mails bei den Empfängern korrekt an.
Wenn ich jedoch die Mails mit Anhängen versende dann wird nur noch Müll empfangen.
D. H. ich habe ein E-Mail mit 2 unterschiedlichen Anhängen (PDF und JPG) an 2 Empfängern gesendet:
1. Empfänger erhält die E-Mail so:
This is a multi-part message in MIME format

--o6ezEqcjy=_f7a9CbRRAEki8y8XlEADQiL
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Dies ist ein Test mit 2 Anh=C3=A4ngen

--o6ezEqcjy=_f7a9CbRRAEki8y8XlEADQiL
Content-Type: application/octet-stream;
name="Bijou-ZGR-1.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Bijou-ZGR-1.png"

iVBORw0KGgoAAAANSUhEUgAAAfQAAAJ0CAYAAADkjtHPAAAAGX RFWHRTb2Z0d2FyZQBBZG9iZSBJ
bWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bX AAAAAAADw/eHBhY2tldCBiZWdp
bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4On htcG1ldGEgeG1sbnM6
eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUC BDb3JlIDUuMy1jMDExIDY2LjE0
NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPH JkZjpSREYgeG1sbnM6cmRmPSJo
...


Der 2. E-Mail Empfänger so:
Dies ist ein Test mit 2 Anhängen

--AuyImXR2k6v0uiqwNvBTArZ8Gx6k=_fZLW
Content-Type: application/octet-stream;
name="Bijou-ZGR-1.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Bijou-ZGR-1.png"

iVBORw0KGgoAAAANSUhEUgAAAfQAAAJ0CAYAAADkjtHPAAAAGX RFWHRTb2Z0d2FyZQBBZG9iZSBJ
bWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bX AAAAAAADw/eHBhY2tldCBiZWdp
bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4On htcG1ldGEgeG1sbnM6
...

Beachtenswert ich auch das bei der zweiten E-Mail, die Anrede korrekt geschrieben wurde.
Dies ist mir alles ein kleines Rätsel.
Was ist den noch an dem Quellcode falsch?
Mit Gruß HPB

HPB 5. Mär 2016 14:41

AW: E-Mail werden wiederholt
 
Guten Tag Delphianer,
nach dem Einfügen von:
Delphi-Quellcode:
idmsgSendeMail.ContentType := 'multipart/mixed; CharSet = UTF-8';
ist es nun gelungen. Ich habe 2 E-Mails mit unterschiedlichen Anhängen versandt und beide
sind fehlerfrei angekommen.
Mit Gruß HPB


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.

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