![]() |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Zitat:
Zitat:
Niemand würde z.B. eine Kompressions-Komponente daran messen, wie diese aus defekten oder fehlenden Daten versucht zu erraten, was ursprünglich vorhanden war oder wie dies im Sinne des jeweiligen Benutzers gerne abgewandelt werden sollte. Zitat:
Screenshot anbei. Am besten mal eine "anonymisierte" Mail als .eml (also Text) hier im Forum anhängen. Edit: Zitat:
Der Maßstab "hatte ich mit D2005 nie Probleme" steht im krassen Gegensatz zu einer Software-Qualitätssicherung. Edit2: Der Trick bei Outlook und Co besteht wohl eher darin, auch den quoted-printable Teil durch den HTML Render zu jagen. Wenn mal wieder ein Hobbyprogrammierer den HTML Teil im Mailversand in den Textteil packt, wird dieser dann trotzdem angezeigt. Gleiches steht dir auch frei. Du könntest auch prüfen, ob der HTML leer ist und dann ggf. ein Fallback auf den Textteil machen. Gruß Assertor |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
![]() Zitat:
Man erzeuge eine neue Mail, packe einen schönen Abdenser rein wie "Günther, Horst" <horst.guenther@online.de>, speichere die Mail, öffne sie wieder und versuche, sie per SMTP zu verschicken. Das kracht, weil beim Öffnen der Mail Name und Mailadresse irgendwie vermischt werden, so dass keine Mailadresse mehr dabei herauskommt. Es macht dabei einige Unterschiede, ob der Name in " " gefasst wird, ob ein Komma enthalten ist und ob Umlaute enthalten sind. Alles mit Indy-Bausteinen erstellt und bearbeitet wohlgemerkt! Unabhängig davon sind wir uns zu 100% einig, dass viel Mist an Mails erzeugt wird, der nicht regelkonform ist, und dass solche Mails eine Frechheit sind. Aber was will man machen - auch solche Mails sind oft wichtig und werden dennoch von Thunderbird/Outlook anstandslos angezeigt, von Indy leider oft nicht. Klar liegt dabei die Schuld nicht bei Indy! Was die Testmail von vorhin anbelangt - sorry, die habe ich wohl zu weit gekürzt, anbei nochmal eine Version, die bei mir, ebenso wie das ungekürzte Original mit TB/Outlook problemlos angezeigt wird, mit Indy aber nicht, weil da der Content-Type fehlt. Dabei sieht der Inhalt des Multiparts, den Indy ausgibt, so aus: Zitat:
Zitat:
Es ist halt immer das Theater, dass bei ab und an wiederkehrenden Fehlern gleich die User dem Admin im Nacken sitzen und der Admin mir im Nacken sitzt, immer mit dem Kommentar "Outlook kann es doch auch..." :lol: |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Hi Adrian,
ein später Nachtrag: Zitat:
Zitat:
Zitat:
Zitat:
Derzeit werden die Daten, die der Parser nicht - weil sie falsch sind - zuordnen kann, in ein eigenes TIdText Objekt gepackt und dann bei TIdMessage.SaveToFile() mit weggeschrieben. Dadurch kommt es dann zu zwei Content-Headern innerhalb der Boundary (der alte wird als einfacher Text betrachtet). Das ganze geht weiter bei den Attachments. Weil das Haupt-Encoding falsch ist, werden auch diese Daten verformt. Deswegen wird auch zwischen TIdMessage.LoadFromFile() and .SaveToFile() die Message scheinbar zerstört. Zitat:
Aber: Ich verstehe Dich und sehe es genauso - was bringt ein Parser, der zwar 100% korrekt arbeitet, aber im täglichen Einsatz nunmal auch defekte Daten verarbeitet werden müssen. Ich habe das ganze daher mal im Indy Core Team gepostet und wir werden das dort weiter diskutieren. Meiner Meinung nach wäre eine Option sinnvoll, die ein "relaxed Parsing" ermöglicht, also auch fehlerhafte Eingabedaten ähnlich Outlook/Thunderbird akzeptiert und möglichst korrekt parst. Wann und ob das etwas wird, kann ich aber leider nicht versprechen. Wenn Du noch mehr Beispiel-Mails hast, möglichst mit den unterschiedlichsten Defekten, kannst Du die mir gerne senden (hier posten oder als PN). Gruß Assertor |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Hallo,
danke für Deine informative Antwort! Ich kann gerne noch einige Problemfälle nachsenden. An sich würde ich ja auch gerne mit Indy weiterarbeiten... Allerdings bin ich gerade noch im Urlaub :), von daher bitte ich noch um ein paar Tage Geduld... Viele Grüße und bis dann! |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Weil ihr gerade dabei seit. Kann es sein dass IdMessage.LoadFromFile nicht zum Einlesen von *.eml Dateien geeignet ist? Oder muss ich LoadFromFile so verstehen, dass es POP3/IMAP Server-Dateien nur lesen kann.
Es macht nämlich keinen Spaß, wenn die Email beim Auftreten eines Punkts in einer eigenen Zeile für beendet erklärt wird und sämtliche Anhänge und text/html Parts dadurch verloren gehen. Den Bug kann ich bei Indy 9 als auch bei Indy 10 (Delphi 2007) und Indy 10 Tiburon (direkt aus dem SVN) nachvollziehen. Hier mal eine Beispiel *.eml Datei.
Code:
Return-Path: <Andreas.Hausladen@wilken.de>
Received: from andromeda ([unix socket]) by andromeda (Cyrus v2.1.15) with LMTP; Fri, 21 Aug 2009 13:26:29 +0200 X-Sieve: CMU Sieve 2.2 Received: from localhost (localhost [127.0.0.1]) by wilken.de (Postfix) with ESMTP id A0B4F24923F for <andreas.hausladen@wilken.de>; Fri, 21 Aug 2009 13:26:29 +0200 (CEST) Received: from wilken.de (localhost [127.0.0.1]) by localhost (AvMailGate-2.0.2-10) id 20238-752D3A3D; Fri, 21 Aug 2009 13:26:29 +0200 Received: from [10.1.2.25] (wksp4081.qs.wilken.de [10.1.2.25]) by wilken.de (Postfix) with ESMTP id 96325248CC9 for <andreas.hausladen@wilken.de>; Fri, 21 Aug 2009 13:26:29 +0200 (CEST) Message-ID: <4A8E84A1.1030104@wilken.de> Date: Fri, 21 Aug 2009 13:27:29 +0200 From: Andreas Hausladen <Andreas.Hausladen@wilken.de> Organization: Wilken User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: Hausladen Andreas <andreas.hausladen@wilken.de> Subject: asd Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: quoted-printable X-AntiVirus: checked by AntiVir MailGate (version: 2.0.2-10; AVE: 7.9.1.3; VDF: 7.1.5.143; host: 10.1.1.31) Hallo .. Diese doppelten Punkte werden auf einen reduziert, was nach dem Speichern und erneutem Laden dazu führt, dass auch dieser Text hier weg ist. . Das hier ist schon gar nicht mehr vorhanden nach dem Laden |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Hi Andreas,
Zitat:
Bevor ich jetzt zu jeder einzelnen Mail was sage, schlage ich vor: Wir machen hier den Schrott-Mail Sammelplatz. Das erhöht die Qualität, da es uns das Testen erlaubt. Das bisherige "Bug nicht melden, aber drüber ärgern" hilft ja bei OpenSource nicht viel ;) Gruß Assertor |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Hallo,
ich habe gerade das selbe Problem. Ich sammel E-Mails von Microsofts Windows Fax Server zusammen, um sie einzelnen Adressen zuzuordnen. Diese E-Mails haben im Header "Content-Transfer-Encoding: base64" stehen, sind aber MIME Multipart. Indy fängt dann an und versucht alles von base64 zu dekodieren, obwohl es nicht base64-codiert ist. "This is a multi-part message in MIME format." ist danach unlesbar und bei den anderen message-parts dekodiert er auch die MIME-Kopfzeilen wie z.B. "Content-Type: text/plain;" ins unleserliche, was ihn dann nicht erkennen lässt, das es ein attachment ist. Nehme ich "Content-Transfer-Encoding: base64" aus dem Kopf raus, ist alles in Ordnung. Hier die gekürzte Mail: Zitat:
Ich muss dazu allerdings sagen, dass ich nicht auf einer ganz aktuellen Indy Version sitze, sondern auf einer älteren Indy10er. Gruß, Steffen |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Zitat:
Ein Punkt am Zeilenanfang (genauer gesagt die Sequenz "\r\n.\r\n") bedeutet bei SMTP das Ende der E-Mail: Zitat:
![]() |
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Zitat:
|
Re: Emails verarbeiten - Indy ist nicht gut genug :(
Hi,
Zitat:
Danke erstmal an alle, die bisher hier Mails hinterlegt haben. Wir haben schon etwas geändert und ich werde das damit mal testen. Sobald es etwas neues gibt, gebe ich hier Feedback! Gruß Assertor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 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