2008-09-18 9 views
7

Warum erstellt meine D2009 exe E-Mails mit Anlagen namens ATTnnnnn.DAT, wenn der gleiche Quellcode in D2007 E-Mails mit Anlagen korrekt mit dem ursprünglichen Dateinamen benannt erzeugt?Warum erstellt meine D2009 exe E-Mails mit Anhängen namens ATTnnnnn.DAT

Ich verwende die jeweiligen Indy-Bibliotheken, die mit D2007 und D2009 kommen. Wenn der ursprüngliche Dateiname in der Anlage nicht vorhanden ist, können Benutzer nicht auf die Anlage doppelklicken, um sie zu öffnen (normalerweise sind Anlagen Excel-Tabellen).

Hinweis: Code ist identisch - nur der Compiler und Indy-Bibliotheken variieren. Der von der D2009-Exe gesendete Anhang kann gespeichert und umbenannt werden, um zzzz.xls zu sagen, und dann wird er korrekt geöffnet - dh die E-Mail und der Anhang werden richtig durchlaufen - es ist nur der Name der E-Mail-Anhangdatei.

Jemand schlug vor, dass die Anhangskopfzeilen beschädigt sind. Ist Indy kaputt gegangen? Der zu vervielfältigende Code ist Standardcode, der auf vielen Websites zu finden ist, den ich aber bei Bedarf posten kann. Danke im Voraus.

Antwort

0

Ich fürchte, Sie müssen nur in den Indy-Code zurückverfolgen. Indy hatte in der Vergangenheit eine Reihe von Bugs, also könnte dies der Grund sein. Wenn Sie aufzeichnen, sollten Sie es ziemlich schnell finden.

0

Wurde die IdAttachment.Filename-Eigenschaft festgelegt? Es ist möglich, dass zwischen den Indy-Versionen die Funktionsweise von Dateiname geändert wurde.

7

Ich habe das Problem gefunden - bitte beachten Sie die Adug.com.au Mailingliste für genaue Details der Lösung, aber in Zusammenfassung - die Version von Indy, die mit D2009 kommt (Version 10.2.5) hat 2 Fehler in der IdMessageClient.pas Einheit in zwei Zeilen, die den Namen = und Dateiname = in der Anlage Teil Verarbeitung (eine Zeile Nummer ist 1222 aus dem Speicher und die andere ist ein paar Zeilen früher; Entschuldigung, ich bin jetzt zu Hause; Ich habe die Dinge heute Abend auf der Arbeit repariert). Das Fehlen dieser Semikolons führt dazu, dass der Anhangskopf schlecht erstellt wird und Outlook einen eigenen Namen für den Anhang generiert.

Die Lösung besteht darin, ein Semikolon (;) auszugeben, bevor der Name = oder Dateiname = Tokens ausgegeben wird. Dann muss Indy neu aufgebaut werden.

vergleichen ich die D2007 Version von Indy (10.1.5) und sehe es setzt immer das Semikolon am Ende der Content-Type Linie damit das Problem vermieden werden, die mit in die Version enthielt gekrochen D2009.

+0

Guter Ort. Vielen Dank für das Teilen! – robsoft

0

Die Empfehlungen von Richard arbeiteten für mich. Ich habe die Nachrichtenquellen einer korrekten Anlage und die von Indy verglichen. Setzen Sie die Semikolons hinter Content-Typ und Content-Disposition (um Linie 1220 tatsächlich, und es funktioniert. Vielen Dank Richard!