![]() |
Anhänge von POP3-Nachrichten
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. :cyclops: Mein Problem ist, dass der ganze MIME-Kram nicht "entschlüsselt" wird. :( D.h. die Mails sehen z.B. so aus:
Code:
Und wenn ich nun auf den Anhang zugreifen will, sieht der Anhang nach dem Abspeichern so aus:
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-- .
Code:
Das ist Base64, das ist mir klar, aber ich hätte gerne normalen, unkodierten Text. :wall:
SGllciBzdGVoZW4gZGllIEJlc3RlbGx1bmdlbi4NCg0KMXggUG9wY29ybg0KMXggMSw1bCBDb2xh
DQoxeCBOYWNob3MgbWl0IFNhbHNhDQoxeCBCTVcgNWVyDQoxeCBCTVcgQ2FicmlvDQozeCBBcHBs ZSBDaW5lbWFkaXNwbGF5ICgzMCIpDQoxeCBBcHBsZSBNYWMgRHVhbC1HNSBpbmtsLiBNYWNPUyBY IFRpZ2VyDQoyeCBERUxMLVRGVHMgKDE5IiksIERWSSArIFZHQSwgOG1zIFJlYWt0aW9uc3plaXQN Cg== Wie kann man den Indy-Komponenten das begreiflichen machen? Chris |
Re: Anhänge von POP3-Nachrichten
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 |
Re: Anhänge von POP3-Nachrichten
Du musst folgendes Flag setzen:
Delphi-Quellcode:
aMsg.NoDecode := false;
|
Re: Anhänge von POP3-Nachrichten
Hi,
@Ratte: Eine Möglichkeit. Geht aber definitiv anders. @Union: hm... leider bringt das nichts. :( Chris |
Re: Anhänge von POP3-Nachrichten
Zitat:
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; |
Re: Anhänge von POP3-Nachrichten
Hi,
danke. Gucke ich mir morgen oder später an. :) Jetzt erstmal Wahlkrimi gucken. :shock: Chris |
Re: Anhänge von POP3-Nachrichten
Hi,
so... nachdem ich den Schock vom Wochenende überwunden habe, melde ich mal wieder zurück. :zwinker: 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. :cry: Das muss doch irgendwie zu fixen sein. :wall: 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 |
Re: Anhänge von POP3-Nachrichten
Zitat:
Zitat:
|
Re: Anhänge von POP3-Nachrichten
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 |
Re: Anhänge von POP3-Nachrichten
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; ... ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz