AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Versand per SMTP

Ein Thema von H.Bothur · begonnen am 17. Jan 2023 · letzter Beitrag vom 18. Jan 2023
 
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#1

Versand per SMTP

  Alt 17. Jan 2023, 16:54
Moin,

ich habe folgendes Testprogramm und folgende Fragen:

1: Ich würde erwarten das ich bei vier versendeten Mails immer nur 4 Anhänge (Test1-Test4) bekomme. Aber ich bekomme in der ersten Mail 4 Anhänge, in der zweiten Mail 8 usw. Ich hätte aber gedacht das das "iAttachment.Free;" am Ende des versenden reicht um die "alten" Anhänge zu löschen.

2: Ich hätte gedacht das die beiden Zeilen

Delphi-Quellcode:
  Form1.Memo1.Lines.Add('Beginn Mailerstellung: ' +FloatToStr(Runde));
  Form1.IdMessage1.Body.Assign(Form1.Memo1.Lines);
den Body-Text der Mail neu setzen. Statt dessen kommt aber imer der gleiche Text der ersten Schleife und die anderen Schleifen ändern den Text nicht mehr.

Und nun - was mache ich denn falsch ??

Gruss
Hans

Delphi-Quellcode:
unit SSLMail2Unit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdIOHandler,
  IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
  IdSMTPBase, IdSMTP, IdBaseComponent, IdMessage, IDAttachment, IdAttachmentFile, IDGlobal;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdMessage1: TIdMessage;
    IdSMTP1: TIdSMTP;
    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure MailConnect;
begin
    Form1.IdSMTP1.AuthType := satDefault; // simpler Login ohne Authentifizierung
    Form1.IdSMTP1.Host := 'smtp.strato.de';
    Form1.IdSMTP1.Port := 465;
    Form1.IdSMTP1.UseTLS := utUseRequireTLS; // mit SSL -> Port dann in aller Regel 587
    Form1.IdSMTP1.Username := 'h.bothur@xxx.xx'; // Benutzername
    Form1.IdSMTP1.Password := 'Passwort'; // Passwort
    // Verbinden mit Server
    Form1.Memo1.Lines.Add('Beginn Connect');
    try
     Form1.IdSMTP1.Connect;
    except
     on E: Exception do
      begin
         Form1.Memo1.Lines.Add('>> Fehler Connect: ');
         Form1.Memo1.Lines.Add('>> ' +e.message +': ');
         Application.MessageBox (PChar(E.Message),'Verbindungsfehler Connect!',MB_OK);
         Form1.IdSMTP1.Disconnect;
         exit;
      end;
    end;
    Form1.Memo1.Lines.Add('Connected');
    Form1.Memo1.Lines.Add('');
end;

procedure MailVersenden(Runde: integer);
var
  iAttachment : TIdAttachment;
begin
  Form1.Memo1.Lines.Add('Beginn Mailerstellung: ' +FloatToStr(Runde));
  Form1.IdMessage1.Body.Assign(Form1.Memo1.Lines); // der eigentliche eMail -Text aus einem TMemo
  Form1.IdMessage1.Priority := TIdMessagePriority(2); // Priorität
  Form1.IdMessage1.Recipients.EMailAddresses := 'hans.hgbothur.de'; // Empfängeradresse
  Form1.IdMessage1.ReplyTo.EMailAddresses := 'h.bothur@hermann-juergensen.de'; // Anwortadresse
  Form1.IdMessage1.From.Text := 'h.bothur@hermann-juergensen.de'; // Absenderadresse
  Form1.IdMessage1.ContentType := 'multipart/*'; // mit Anhang!
  Form1.IdMessage1.Subject := 'Testmail: ' +FloatToStr(Runde);
  iAttachment := TIdAttachmentFile.Create(Form1.IdMessage1.MessageParts, 'i:\h.bothur\entw\rtn\mailtest\test1.pdf') ;
  iAttachment := TIdAttachmentFile.Create(Form1.IdMessage1.MessageParts, 'i:\h.bothur\entw\rtn\mailtest\test2.pdf') ;
  iAttachment := TIdAttachmentFile.Create(Form1.IdMessage1.MessageParts, 'i:\h.bothur\entw\rtn\mailtest\test3.pdf') ;
  iAttachment := TIdAttachmentFile.Create(Form1.IdMessage1.MessageParts, 'i:\h.bothur\entw\rtn\mailtest\test4.pdf') ;

  Form1.Memo1.Lines.Add('Beginn Senden: ' +FloatToStr(Runde));
  try
     if Form1.IdSMTP1.Connected then Form1.IdSMTP1.Send(Form1.IdMessage1);
  except
    on E: Exception do
    begin
       Application.MessageBox (PChar(E.Message),'Verbindungsfehler Versand !',MB_OK);
       Form1.IdSMTP1.Disconnect;
       exit;
    end;
  end;
  iAttachment.Free;
  Form1.Memo1.Lines.Add('Ende Senden: ' +FloatToStr(Runde));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  MailConnect;
  for i := 1 to 4 do
  begin
    MailVersenden(i);
    Memo1.Lines.Add('');
  end;
  IdSMTP1.Disconnect;
end;

end.
Hans-Georg Bothur
www.hermann-juergensen.de

Geändert von H.Bothur (17. Jan 2023 um 21:53 Uhr) Grund: Zugangsdaten rausgenommen :-)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 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