Einzelnen Beitrag anzeigen

Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#11

AW: eMail mit Anhang versenden XE5 / Outlook 2013

  Alt 8. Aug 2014, 13:18
Die Welt kann manchmal so einfach sein

nun hat es endlich geklappt - bin aber den ganzen Vormittag dran gesessen, aufgrund eurer Hinweise konnte ich mir nun den Code zusammenfriemeln.

Da sicher andere auch dieses Problem haben oder drauf stoßen werden, hier nun mal meinen funktionierenden source

im Form sind die Komponenten TIdSSLIOHandlerSocketOpenSSL TIdMessage und TIdSMTP

Code:

var
   S : string;
   i : integer;

   Fehler : boolean;

begin

 
  idmessage1.Clear;
  idSMTP1.Host := 'smtpmail.t-online.de';
  idSMTP1.Port := 465;
  idSMTP1.AuthType := satDefault; {satNone wenn keine Authentifizierung benötigt wird}
  idSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
  idSMTP1.UseTLS := utUseImplicitTLS;
  idSMTP1.Username := 'Dein_Username@t-online.de';
  idSMTP1.Password := 'Dein_Passwort';

  IdMessage1.From.Text := 'Absender@t-online.de';
  IdMessage1.Recipients.EMailAddresses := 'Empfänger@t-online.de'; // Empfänger
  IdMessage1.BccList.EMailAddresses := ''; {optional Blincopy Empfänger}
  IdMessage1.CCList.EMailAddresses := ''; {optional Copy Empfänger}
  IdMessage1.Subject := 'Betreff';
  IdMessage1.ContentType := 'multipart/*'; // weil mit Text und Anhang


  IdMessage1.Body.Clear;
  IDMessage1.Body.Text := 'Indy Testmail';

  {es werden die Dateinamen ohne Pfad der im Versandverzeichnis befindlichen Dateien in die Listbox_versand kopiert}
  Listbox_versand.Clear;
  if FindFirst(Versandverzeichnis + '*.*', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Attr <> faDirectory) then
      begin
        Listbox_versand.Items.Add(SR.Name);
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;

  {Anhänge einlesen}

  for I := 0 to Listbox_versand.Count -1 do
  begin
    TIdAttachmentFile.Create(idMessage1.MessageParts,Versandverzeichnis + Listbox_versand.Items[i]);
  end;

  try
    try
      IdSMTP1.Connect;
      IdSMTP1.Authenticate; {nicht zwingend erforderlich}
      if idSMTP1.Connected then IdSMTP1.Send(IdMessage1);
    except on E:Exception do
      begin
        showmessage(e.Message);
        fehler := true;
      end;
    end;
  finally
    if idSMTP1.Connected then IdSMTP1.Disconnect();
  end;

  if fehler = false then showmessage('die Nachricht wurde erfolgreich versendet');

end;
schönes Wetter, super Unterstützung - was will man mehr

Schönen Gruß von Sidi61
  Mit Zitat antworten Zitat