AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy TIdMessageBuilderHtml PlanText Umlaute
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TIdMessageBuilderHtml PlanText Umlaute

Ein Thema von sega84 · begonnen am 6. Dez 2010 · letzter Beitrag vom 6. Dez 2010
Antwort Antwort
sega84

Registriert seit: 18. Sep 2006
73 Beiträge
 
Delphi XE2 Professional
 
#1

Indy TIdMessageBuilderHtml PlanText Umlaute

  Alt 6. Dez 2010, 09:40
Hallo zusammen,
beim versenden einer Email über Indy 10 nutze ich die TIdMessageBuilderHtml Komponente. Diese funktioniert im HTML-Bereich einwandfrei.
Wenn ich allerdings einen Alternativ-Text übergebe, werden die Sonderzeichen und Umlaute komplett weggeschnitten.
Wo liegt das Problem. Anbei ein Quellcode-Ausschnitt:

Delphi-Quellcode:
 try
    result := false;
    mes := TIdMessage.Create(smtp);
    mes.IsEncoded := true;
    mes.From.Address := AAbsenderEmail;
    mes.From.Name := AAbsenderName;
    mes.ReplyTo.EMailAddresses := AAbsenderEmail;
    mes.Recipients.EMailAddresses := AEmpfaengerEMail;
    mes.Subject := ABetreff;
    mes.ContentType := 'Multipart/Alternative';
    mes.ContentDisposition := 'inline';
    mes.ExtraHeaders.Add('MIME-Version: 1.0');
    mes.ExtraHeaders.Add('Content-Type: multipart/alternative;');
    mes.ExtraHeaders.Add(#9'boundary="----=_TEXT_AND_HTML_BOUNDARY_"');
    mes.CharSet := 'utf-8';

    with TIdMessageBuilderHtml.Create do
    begin
      try
        Html.Clear;
        Html.Text := GetHTMLText;
        PlainText.Text := AAlternativtext;
        FillMessage(mes);
      finally
        Free;
      end;
    end;

    try
      while not smtp.Connected do
      begin
        ConnectSMTP;
        sleep(25);
      end;
      smtp.Send(mes);
      result := true;
    except
      on e : EIdConnClosedGracefully do
      begin
        result := true;
      end
      else
      begin
        result := false;
      end;
    end;
  finally
    FreeAndNil(mes);
  end;
Vielen Dank für eure Hilfe...

Geändert von sega84 ( 6. Dez 2010 um 09:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Indy TIdMessageBuilderHtml PlanText Umlaute

  Alt 6. Dez 2010, 10:06
Hast du dir auch die letzte Version der Indies geholt? Die mitgelieferten Versionen (vor allem D2009) haben noch einige größere Bugs im Bereich Unicode.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
sega84

Registriert seit: 18. Sep 2006
73 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Indy TIdMessageBuilderHtml PlanText Umlaute

  Alt 6. Dez 2010, 10:10
Hast du dir auch die letzte Version der Indies geholt? Die mitgelieferten Versionen (vor allem D2009) haben noch einige größere Bugs im Bereich Unicode.
Hallo,
werde dieses direkt machen und berichten.
  Mit Zitat antworten Zitat
sega84

Registriert seit: 18. Sep 2006
73 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Indy TIdMessageBuilderHtml PlanText Umlaute

  Alt 6. Dez 2010, 11:15
Hast du dir auch die letzte Version der Indies geholt? Die mitgelieferten Versionen (vor allem D2009) haben noch einige größere Bugs im Bereich Unicode.
Wo ich leider nun ein Problem habe:
Nutze Delphi 2009... Wo bekomme ich die aktuellste Indy-Version her und wie muss diese installiert werden?
  Mit Zitat antworten Zitat
sega84

Registriert seit: 18. Sep 2006
73 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Indy TIdMessageBuilderHtml PlanText Umlaute

  Alt 6. Dez 2010, 13:17
Lösung gefunden:
Delphi-Quellcode:
    with TIdMessageBuilderHtml.Create do
    begin
      try
        PlainText.Text := AAlternativtext;
        Html.Clear;
        Html.Text := GetHTMLText;
        FillMessage(mes);
      finally
        Free;
      end;
    end;

    mes.MessageParts.CountParts;
    for i := 0 to mes.MessageParts.Count - 1 do
    begin
      if ansiuppercase(mes.MessageParts.Items[i].ContentType) = ansiuppercase('text/plain') then
      begin
        with TIdText(mes.MessageParts.Items[i]) do
        begin
          ContentType := 'text/plain';
          CharSet := 'ISO-8859-1';
          ContentTransfer := 'BASE64';
          ContentDisposition := 'inline';
        end;
        break;
      end;
    end;
Danke an alle!
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:30 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