Results 1 to 5 of 5

Thread: email met HTML format

  1. #1

    email met HTML format

    Vanuit mijn applicatie kan ik mail versturen.
    Hiervoor maak ik gebruik van de TIDMessage en TIdSMTP componenten
    Hiermee kan ik vrij eenvoudig wat tekst en bijlages sturen.
    Echter de gebruikers vinden het vervelend dat de email als plain text verstuurd wordt.
    Graag zouden zij de body in HTML zien zodat ze bij een reply of een forward bepaalde regels kunnen highlighten e.d.

    Voor de bodytekst gebruik ik een string waarbij ik met #13 steeds op een nieuwe regel begon.

    Inmiddels maak ik gebruik van de TIdMessageBuilderHtml om een HTML email te maken.
    Helaas wordt hierdoor de bodytekst achter elkaar geplakt (dus alles op 1 regel)

    Code:
    function TEmail.Send: boolean;
    
    var
     smtp: TIdSMTP; // IdSmtp.pas
     msg: TidMessage; 
     i:integer;
     MB : TIdMessageBuilderHtml;
    
    begin
     msg := TidMessage.Create(nil);
     msg.From.Name := FName;
     msg.From.Address := FAddress;
     msg.Subject := FSubject;
     Msg.ContentType := 'multipart/mixed';
    
     msg.Body.Clear;
     FBodyText := 'Dit is regel 1' + #13 'Dit moet op regel 2' +#13 'enz....';
    
    
     MB := TIdMessageBuilderHtml.Create;
     try
      MB.Html.Text := FbodyText;
      MB.Attachments.Add(Fattachment);
      MB.FillMessage(msg);
     finally
      MB.Free;
     end;
    
    
    
     for i := 0 to FRecipients.Count-1 do
      msg.Recipients.Add.Address:=FRecipients[i];
    
     for i := 0 to FCC.Count-1 do
      msg.CCList.Add.Address:=FCC[i];
    
    
     smtp := TIdSMTP.Create(nil);
     try
      smtp.Host := 'xxxxxxxx.nl'; // IP Address of SMTP server
      smtp.Port := 25; //The default already is port 25 (the SMTP port)
      smtp.Connect;
      try
       smtp.Send(msg);
       result:=true;
      finally
       smtp.Disconnect;
      end;
     finally
      smtp.Free;
     end;
    
     msg.Free;
    end;
    Graag zou ik dan in mijn email de volgende text zien

    Dit is regel 1
    Dit moet op regel 2
    enz....

    Helaas krijg ik steeds de volgende text terug
    Dit is regel 1 Dit moet op regel 2 enz....

    Hoe cenverteer ik mijn body tekst zodat ik meerdere regels zie

  2. #2
    Met heel wat puzzelen ben ik er uit
    Wel moet ik mijn body text nu als HTML gaan parsen
    Echter hierbij loop ik tegen het probleem dat bij het omzetten van de bodytext naar een stringlist iedere spatie als delimeter gezien wordt (schijnt zo te zijn volgens design)
    Dus als iemand daar nog een handige functie weet om mijn bodytext om te zetten naar een stringlist houd ik me graag aanbevolen.

    Zo niet dan maak ik zelf een loopje

    Code:
     FBodyText:=stringreplace(FBodyText,#13,';', [rfReplaceAll]);
     Body:=Tstringlist.Create;
     Body.Delimiter:=';';
     Body.DelimitedText:=FBodyText;
    
     T:=Tstringlist.Create;
       T.add('<html>');
       T.add('<head>');
       T.add('</head>');
       T.add('<body>');
       for i := 0 to Body.count-1 do
       begin
        T.add('<p>'+ Body[i]+'</p>');
       end;
       T.add('</body>');
       T.add('</html>');

  3. #3
    https://docwiki.embarcadero.com/Libr...trictDelimiter

    "If StrictDelimiter is False, spaces and non-printable character are also used as delimiters."

  4. #4
    Top dat was idd wat ik zocht

  5. #5
    Senior Member
    Join Date
    Jan 2002
    Location
    Nieuwlande, Nederland
    Posts
    612
    Sorry dat ik dit na een maand nog een keer open trek maar heb het een paar keer gelezen en heb toch een opmerking: als je in Outlook de bron van een email opent, is de body bij mijn weten platte tekst en zit de HTML variant in een messagepart (TidMessagePart)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •