Einzelnen Beitrag anzeigen

Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#3

Re: html mail unter delphi mit Bitmaps versenden

  Alt 21. Jul 2004, 16:07
Hi !
Hier meine Routine zum versenden von Mail direkt mit INDY:

Delphi-Quellcode:
function SendHTMLEMailDirect(empfaenger, betreff, HTMLText : string): byte;
var IdMessage : TIdMessage;
    IdSMTP : TIdSMTP;
    i,x,y : integer;
    img : string;
    ContentID : integer;
begin
  result:=0;
  try
    IDMessage := TIdMessage.Create(Application.MainForm);
    IdSMTP := TIdSMTP.Create(Application.MainForm);
    // als erstes muss!!! ein einfacher Text "text/plain" kommen!
    IdMessage.Body.Text := 'Diese E-Mail wurde im HTML-Format versendet';

    with TIdText.Create(IdMessage.MessageParts) do
    begin
      ContentType := 'text';
      Body.Text := 'Diese E-Mail wurde im HTML-Format versendet';
    end;

    //Alle img-Tags verarbeiten
    ContentID:=10001;

    y:= pos('<IMG',UpperCase(HTMLText));
    while y>0 do
    begin
      i:= PosEx('SRC="',UpperCase(HTMLText),y);
      if i>0 then
      begin
        x:=PosEx('"',HTMLText,i+6);
        img:=copy(HTMLText,i+5,x-i-5);
        delete(HTMLText,i+5,x-i-5);
        insert('cid:'+IntToStr(ContentID)+'@'+ExtractFileName(img),HTMLText,i+5);
        //IMG als Attachment anfügen
        with TIdAttachment.Create(IdMessage.MessageParts, img) do
        begin
          // hier wird diese CONTENT-ID definiert!
          ExtraHeaders.Values['Content-ID'] := IntToStr(ContentID)+'@'+ExtractFileName(img);
        end;
        inc(ContentID);
      end;
      y:=PosEx('<IMG',UpperCase(HTMLText),y+1);
    end;

    //HTML-Message erzeugen
    with TIdText.Create(IdMessage.MessageParts) do
    begin
      ContentType := 'text/html';
      Body.Add(HTMLText);
    end;

    //Empfänger und Sender
    IdMessage.Subject := betreff;
    IdMessage.From.Address := 'absender@meinedomain.de';
    IdMessage.From.Name := 'Name des Absenders';
    IdMessage.ReplyTo.EMailAddresses := 'antwort@meinedomain.de';
    IdMessage.Recipients.EMailAddresses:=empfaenger;

    IdSMTP.Host:='host';
    IdSMTP.Username:='Username';
    IdSmtp.Password:='Passwort';
    IdSMTP.Port:=25;
    IdSMTP.AuthenticationType:=atLogin;
    IdSMTP.Connect;
    if IdSMTP.Authenticate then
    begin
      IdSMTP.Send(IdMessage);
      ShowMessage('Mail wurde erfolgreich versendet !');
    end
    else
      ShowMessage('Authentication failed !');
    IdSMTP.Disconnect;

  finally
    IDMessage.Destroy;
    IdSMTP.Destroy;
  end;
end;
Hoffe es hilft dir weiter !!!

Gruß, Helld
  Mit Zitat antworten Zitat