AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Email Betreff von ISO_8859-1 in Latin1 wandeln

Email Betreff von ISO_8859-1 in Latin1 wandeln

Ein Thema von Schaedel · begonnen am 5. Jan 2006 · letzter Beitrag vom 5. Jan 2006
Antwort Antwort
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#1

Email Betreff von ISO_8859-1 in Latin1 wandeln

  Alt 5. Jan 2006, 14:27
Hallo und guten Tag,

ich habe mir ein Mailprogramm geschrieben welches meine Emails über Pop3 verwalten soll.(Componente = Internetmailsuite Remotepop)
Ich lese verschiedene Header aus z.b. Sender,Empfänger und Betreff.
Wenn ich mit Outlook Emails an das Postfach sende und dann den Betreffheader auslese er im format ISO_8859-1 ankommt.

Bsp.
=?iso-8859-1?Q?WG=3A_XXX=5FBLX=2ES2L=3B_XXXXXXX_f=FCr_XXXXX_= 2XXXX?=

er schreibt mir zwar die ISO dazu aber wandelt keine Umlaute und andere Sonderzeichen.

Delphi-Quellcode:
procedure TF_Mailverwaltung.ButtonVerbindenClick(Sender: TObject);
var
  Button,Button1,Button2 : TRadiobutton;
  panel : Tpanel;
  i,j :integer;
  SL :TStrings;
begin
  ButtonVerbinden.Enabled := false;
  for i := 0 to msRemotePOP.RemoteInfo.Count -1 do begin
    Tpanel(findcomponent('panel'+inttostr(i))).free;
    for j := 0 to 3 do
      StringGrid.Cells[j,i+1] := '';
  end;
  StringGrid.Height :=70;
  Statusbar.Panels.Items[0].Text := 'Verbindung mit POP3Server wird hergestellt';
  try
    msRemotePOP.Server := Server;
    msRemotePOP.UserName := XXXX;
    msRemotepop.Password := XXXX;
    msRemotePOP.MessageDirectory := 'C:\XXXXX\';
    msRemotePOP.WinsockLoaded := true;
    msRemotePOP.OpenConnection;
    msRemotePOP.UpdateRemoteInfo;
    Statusbar.Panels.Items[0].Text := 'Mails werden gelesen';
    for i := 0 to msRemotePOP.RemoteInfo.Count -1 do begin
      Stringgrid.RowCount:= i+2;
      sl := msRemotePOP.RemoteInfo.Items[i].Headers;
      for j := 0 to sl.Count-1 do begin
// hier wird der Header ausgelesen
        if pos('Subject:',sl.Strings[j])>0 then begin
          StringGrid.Cells[1,i+1] := trim(copy(sl.Strings[j],9,255));
        end;
        if pos('Date:',sl.Strings[j])>0 then begin
          StringGrid.Cells[3,i+1] := trim(copy(sl.Strings[j],6,26));
        end;
        if pos('From:',sl.Strings[j])>0 then begin
          StringGrid.Cells[2,i+1] := trim(copy(sl.Strings[j],pos('<',sl.Strings[j]),255));
        end;
      end;
      StringGrid.cells[0,i+1] := inttostr(i+1);
      StringGrid.Height := StringGrid.Height +15;
      if F_Mailverwaltung.Height < StringGrid.Height +30 then begin
        F_Mailverwaltung.Height := F_Mailverwaltung.Height +100;
      end;
    end;
// Hier wird dynamisch ein Panel erzeugt auf dem 3 Radiobuttons liegen ehr unwichtig für den ablauf des Programm
    for i := 0 to msRemotePOP.RemoteInfo.Count -1 do begin
      Button := TRadioButton.Create(self);
      panel := TPanel.Create(self);
      panel.Name := 'Panel' +inttostr(i);
      panel.Width := 50;
      panel.Top := 19 + (17 * i);
      panel.Left := 5;
      panel.Height := 17;
      panel.Caption := '';
      panel.BevelOuter := bvnone;
      panel.show;
      panel.parent := PanelOben;
      button.parent:= panel;
      button.Name := 'MyRadiobutton'+ inttostr(i);
      button.Left := 5;
      button.Top := 0;
      button.Width := 17;
      button.Caption := '';
      button.show;
      Button1 := TRadioButton.Create(self);
      button1.parent:= panel;
      button1.Name := 'MyRadiobutton'+ inttostr(i) +'a';
      button1.Left := 21;
      button1.Top := 0;
      button1.Width := 17;
      button1.Caption := '';
      button1.show;
      Button2 := TRadioButton.Create(self);
      button2.parent:= panel;
      button2.Name := 'MyRadiobutton'+ inttostr(i)+'b';
      button2.Left := 37;
      button2.Top := 0;
      button2.Width := 17;
      button2.Caption := '';
      button2.show;
    end;
  except
    on E: Exception do begin
      Showmessage('Der Abruf der Mails ist fehlgeschlagen!');
      ButtonVerbinden.Enabled := true;
      exit;
    end;
  end;
  StringGrid.Visible:= true;
  StatusBar.Panels.Items[0].text := 'Mails erfolgreich eingelesen!';
  ButtonVerbinden.Enabled := true;
Hat jemand eine Idee wie ich den Betreff der durch die ISO zerstückelt wurde wieder gerade gebogen bekomme?

Ich suche seit heute morgen im Forum nach Lösungen und konnte nichtmals einen Ansatz finden.

Mit freundlichen Grüßen

Schaedel
Michael S.
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Email Betreff von ISO_8859-1 in Latin1 wandeln

  Alt 5. Jan 2006, 16:41
Ich habe das Problem vorher abgefangen indem ich keine umlaute im Betreff zulasse.
Empfinde dies aber nur als Notlösung.
Also falls jemand einen Tipp hat immer her damit =)

Michael S.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Email Betreff von ISO_8859-1 in Latin1 wandeln

  Alt 5. Jan 2006, 17:22
Herzlich Willkommen in der Delphi-PRAXiS, Schaedel.

Sieht nach nested encoding aus. SMTP protocol header sind in 7bit ASCII kodiert, als escape Mechanismus wurde in deinem Beispiel quoted printable verwendet - "=FC" entspricht dann dem "ü" im ISO-8859-1 encoding. Du kannst einfach beim Auftreten eines Gleichheitszeichens die beiden folgenden hex digits wieder in einen character verwandeln. Die Ächtung der Umlaute halte ich für eine sehr drastische Maßnahme.

Neujahrsgrüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Email Betreff von ISO_8859-1 in Latin1 wandeln

  Alt 5. Jan 2006, 21:00
Danke das fiel mir auch gerade auf

Das schlimme ist ja nur das er mir den Betreff total zerstückelt und gar nichts mehr an seinen richtigen Platz lässt.
Ich denke die Ächtung der Umlaute bei diesen Mails spielt keine arg so große rolle

Der Nutzen ist einfach kleiner als der Aufwand.
Trotzdem danke
Michael S.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:10 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