AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Anhänge von POP3-Nachrichten
Thema durchsuchen
Ansicht
Themen-Optionen

Anhänge von POP3-Nachrichten

Ein Thema von CalganX · begonnen am 18. Sep 2005 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Anhänge von POP3-Nachrichten

  Alt 18. Sep 2005, 17:58
Hi,
ich hab mal wieder so meine Probleme mit den Indy-9-Komponenten.

Ich hole über TIdPOP3 meine Nachrichten von einem Server ab. Soweit so gut und so ists auch richtig. Das klappt sogar.
Mein Problem ist, dass der ganze MIME-Kram nicht "entschlüsselt" wird. D.h. die Mails sehen z.B. so aus:
Code:
Return-Path: <admin@csd-software.net>
X-Original-To: [email]xplugged@csd-software.net[/email]
Delivered-To: [email]m00b6c63@dd2628.kasserver.com[/email]
Received: from [80.184.85.150] (D5596.d.pppool.de [80.184.85.150])
   by dd2628.kasserver.com (Postfix) with ESMTP id 4991B14E4E2
   for <xplugged@csd-software.net>; Fri, 16 Sep 2005 16:30:24 +0200 (CEST)
Message-ID: <432AD702.9010509@csd-software.net>
Date: Fri, 16 Sep 2005 16:30:26 +0200
From: "Blubbel-Master" <admin@csd-software.net>
Organization: Blubbel-Community
User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: [email]xplugged@csd-software.net[/email]
Subject: [xplugged] blubbel
Content-Type: multipart/mixed; boundary="=_MoreStuf_2zzz1234sadvnqw3nerasdf"
X-UIDL: S%J!!dJZ!!O*W"!fK8!!
Status: RO

This is a multi-part message in MIME format

--=_MoreStuf_2zzz1234sadvnqw3nerasdf
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

This is a multi-part message in MIME format.


--=_MoreStuf_2zzz1234sadvnqw3nerasdf
Content-Type: text/plain; name="bestellungen.txt";
        name="bestellungen.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="bestellungen.txt";
        filename="bestellungen.txt"

SGllciBzdGVoZW4gZGllIEJlc3RlbGx1bmdlbi4NCg0KMXggUG9wY29ybg0KMXggMSw1bCBDb2xh
DQoxeCBOYWNob3MgbWl0IFNhbHNhDQoxeCBCTVcgNWVyDQoxeCBCTVcgQ2FicmlvDQozeCBBcHBs
ZSBDaW5lbWFkaXNwbGF5ICgzMCIpDQoxeCBBcHBsZSBNYWMgRHVhbC1HNSBpbmtsLiBNYWNPUyBY
IFRpZ2VyDQoyeCBERUxMLVRGVHMgKDE5IiksIERWSSArIFZHQSwgOG1zIFJlYWt0aW9uc3plaXQN
Cg==

--=_MoreStuf_2zzz1234sadvnqw3nerasdf--
.
Und wenn ich nun auf den Anhang zugreifen will, sieht der Anhang nach dem Abspeichern so aus:
Code:
SGllciBzdGVoZW4gZGllIEJlc3RlbGx1bmdlbi4NCg0KMXggUG9wY29ybg0KMXggMSw1bCBDb2xh
DQoxeCBOYWNob3MgbWl0IFNhbHNhDQoxeCBCTVcgNWVyDQoxeCBCTVcgQ2FicmlvDQozeCBBcHBs
ZSBDaW5lbWFkaXNwbGF5ICgzMCIpDQoxeCBBcHBsZSBNYWMgRHVhbC1HNSBpbmtsLiBNYWNPUyBY
IFRpZ2VyDQoyeCBERUxMLVRGVHMgKDE5IiksIERWSSArIFZHQSwgOG1zIFJlYWt0aW9uc3plaXQN
Cg==
Das ist Base64, das ist mir klar, aber ich hätte gerne normalen, unkodierten Text.

Wie kann man den Indy-Komponenten das begreiflichen machen?

Chris
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Anhänge von POP3-Nachrichten

  Alt 18. Sep 2005, 18:00
Bei den Indy's gibt es doch eine Komponente die das konvertieren kann. TIdBase64 oder so.
Hoffe du findest sie, ich hab' leider grad' keine Indy's da.

Ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Anhänge von POP3-Nachrichten

  Alt 18. Sep 2005, 18:03
Du musst folgendes Flag setzen:

aMsg.NoDecode := false;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Anhänge von POP3-Nachrichten

  Alt 18. Sep 2005, 18:17
Hi,
@Ratte: Eine Möglichkeit. Geht aber definitiv anders.

@Union: hm... leider bringt das nichts.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Anhänge von POP3-Nachrichten

  Alt 18. Sep 2005, 18:21
Zitat von Chakotay1308:
Hi,
@Union: hm... leider bringt das nichts.
Chris
Ok, dann poste ich mal den kompletten Source dafür (ist seit 2 Jahren pausenlos im Einsatz und funktioniert definitiv):
Delphi-Quellcode:
//------------------------------------------------------------------------
procedure TfrmGetMail.btnRefreshClick(Sender: TObject);
//------------------------------------------------------------------------
// Abruf der Mails
//------------------------------------------------------------------------
var i : longint;
    iMp : integer;
    iMax : longint;
    aMsg : tIdMessage;
    s : string;
    lWasActive : boolean;

begin
  if not lRunning then begin
    HideIcon(0);
    ShowIcon(IconActive,0, 'Checking for mail');
    Logg('Checking for mail');
    lRunning := true;
    // Timer disablen
    Mailtimer.Enabled := false;

    // Werte setzen
    tPopMail.Host := sServerName;
    tPopMail.Username := sUserName;
    tPopMail.Password := sPassWord;

    // lbxMail.Clear;

    // Verbinden
    try
      btnRefresh.Enabled := false;
      Logg('Connecting');
      lblStatus.Caption := 'Connecting';

      lWasActive := true;
      // Automatisch mit dem Internet verbinden
      if not InternetGetConnectedState(NIL, 0) then begin
         lWasActive := false;
         InternetAutodial(internet_autodial_force_unattended,0 );
      end;

      // Timeout ist in Millisekunden
      tPopMail.Connect(iTimeOut * 1000);

      // Anzahl der Mails
      iMax := tPopMail.CheckMessages;

      // Alle Mails durchlaufen
      for i := 1 to iMax do begin
        lblStatus.Caption := 'Getting mail '+inttostr(i)+'/'+inttostr(iMax);
        Logg('Getting mail '+inttostr(i)+'/'+inttostr(iMax));
        Application.ProcessMessages;
        aMsg := tIdMessage.Create(NIL);

        // Zur Analyse der einzelnen Bestandteile
        aMsg.NoDecode := false;
        tPopMail.Retrieve(i, aMsg);
        aMsg.ProcessHeaders;
        Application.ProcessMessages;
        // Protokoll eintragen
        Logg('From: '+aMsg.From.Address);

        if (sFromAdress = '') or
           (sFromAdress = aMsg.From.Address) then begin

           // eMail analysieren
           for iMp := 0 to aMsg.MessageParts.Count-1 do begin
              if aMsg.MessageParts.Items[iMp] is tIdAttachment then begin
                 // Dateinamen holen
                 s := (aMsg.MessageParts.Items[iMp] as tIdAttachment).Filename;

                 // Extension ändern
                 if sFileExt <> 'then
                    s := ChangeFileExt(s, '.'+sFileExt);

                 // Datei speichern
                 (aMsg.MessageParts.Items[iMp] as tIdAttachment).savetofile(sDataPath+s);
                 // Protokoll eintragen
                 Logg('Attachment saved as '+sDataPath+s);
              end;
           end;

           // Gesamte Nachricht speichern
           DateTimeToString(s,'yyyymmdd_hhnnsszzz',now);
           aMsg.SaveToFile(sMailPath+s+'.eml');
           // Protokoll eintragen
           Logg('Mail saved as '+sMailPath+s+'.eml');

           // Nachricht auf dem Server löschen
           tPopMail.Delete(i)

        end
        else begin
           Logg('Not accepted, wrong from Adress');
        end;
        // Message-Objekt löschen
        aMsg.Free;

      end;
    except
      on E: Exception do begin
         Logg(e.Message);
         if lPopupMsg then begin
            ErrorFlashStart;
            // MessageDlg(e.Message, mtError,[mbOk], 0);
         end;
      end;
    end;

    // Verbindung beenden
    Logg('Disconnecting');
    tPopMail.Disconnect;

    if not lWasActive then
       InternetAutoDialHangup(0);

    btnRefresh.Enabled := true;
    MailTimer.Enabled := true;
    lRunning := false;
    lblStatus.Caption := 'Waiting';
    iSeconds := iInterval;
    HideIcon(0);
    ShowIcon(IconInactive,0, 'Waiting');
  end;
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Anhänge von POP3-Nachrichten

  Alt 18. Sep 2005, 18:42
Hi,
danke. Gucke ich mir morgen oder später an.
Jetzt erstmal Wahlkrimi gucken.

Chris
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Anhänge von POP3-Nachrichten

  Alt 20. Sep 2005, 23:32
Hi,
so... nachdem ich den Schock vom Wochenende überwunden habe, melde ich mal wieder zurück.

Ich habe relativ viel von deinem SourceCode übernommen, doch leider ändert sich nichts. Ich habe ProcessHeaders eingebaut, NoEncode und NoDecode verwendet und beide hin und her geschoben, doch es ändert leider nichts am Format der eMails.

Das muss doch irgendwie zu fixen sein.
Hat jemand noch eine Idee?

Ich kann morgen mal etwas Source posten, aber das Problem ist, dass das bei mir in drei Teile (1. Abholen und Speichern; 2. Zum Lesen Öffnen; 3. Anhang speichern) aufgeteilt ist - deswegen ist das ein wenig schwierig. Aber wenn theoretisch es funktionieren müsste und es keine andere Möglichkeit gibt, bastel ich das morgen mal kurz zusammen.

Danke für eure Hilfe,
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Anhänge von POP3-Nachrichten

  Alt 21. Sep 2005, 08:29
Zitat von Chakotay1308:
Hi,
Das muss doch irgendwie zu fixen sein.
Hat jemand noch eine Idee?

Zitat von Chakotay1308:
Content-Transfer-Encoding: 7bit Chris
Chris
Ich glaube die Mail ist einfach falsch generiert. Hast Du es mal mit anderen Mails probiert? IMHO sollte dort stehen Chris

Zitat von Outlook:
Content-Transfer-Encoding: base64
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Anhänge von POP3-Nachrichten

  Alt 21. Sep 2005, 11:35
Hi,
das Problem ist, dass ich nicht weiß wer die Mail versendet und wie sie versendet wird. Mein Modul muss also genauso flexibel sein, wie eine normale eMail-Software.

Chris
  Mit Zitat antworten Zitat
raffo

Registriert seit: 15. Aug 2005
79 Beiträge
 
#10

Re: Anhänge von POP3-Nachrichten

  Alt 27. Okt 2005, 10:19
Der Quellcode oben ist schon mal gut, hier fehlt noch "idText" um den Nachrichtentext zu bekommen:

Delphi-Quellcode:
// eMail analysieren
   for iMp := 0 to aMsg.MessageParts.Count-1 do
       begin
       if aMsg.MessageParts.Items[iMp] is tIdAttachment then
          begin
          // Dateinamen holen
          s := (aMsg.MessageParts.Items[iMp] as tIdAttachment).Filename;
          ...
          ...

    if aMsg.MessageParts.Items[iMp] is tIdText then
       begin
       s := (aMsg.MessageParts.Items[iMp] as tIDText).Body.Text;
       body.text:=s;
       end;

...
...
Ralf Ringshausen
  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 02:50 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