![]() |
SMTP - Datei wird nicht mehr versendet
Hi,
bin erst heute auf dieses Forum gestoßen und hoffe auf Hilfe bei einem kleinem Problem. Boardsuche habe ich schon verwendet, aber ohne sehr großen Erfolg. :( Bin auch nicht sicher ob ich das hier die richtige Stelle ist für mein Problem... bitte um Nachsicht, falls was verschoben werden muss :) Und zwar geht um ein Problem bezüglich SMTP ... Ich habe Indy 10 verwendet, um eine Email samt Dateianhang zu versenden und das funktioniert auch normalerweise ohne Probleme. Jetzt wollte ich für ein kleines Programm mit dem ich Dateien verwalten kann noch eine Funktion einbauen, die es ermöglicht Sicherungskopien bzw. die Datei selbst erst ab einer bestimmten Größe zu versenden ... Da kam ein Thread in diesem Forum ins Spiel, in dem folgender Code für die Ermittlung der Dateigröße gepostet wurde:
Code:
Diesen Code habe ich erstmal so in mein Programm eingebunden, und dann folgende Zeilen hinzugefügt:
function GetFileSize(const szFile: String): Int64;
var fFile: THandle; wfd: TWIN32FINDDATA; begin result := 0; if not FileExists(szFile) then exit; fFile := FindFirstfile(pchar(szFile),wfd); if fFile = INVALID_HANDLE_VALUE then exit; result := (wfd.nFileSizeHigh*(MAXDWORD))+wfd.nFileSizeLow; windows.FindClose(fFile); end;
Code:
danach steht dann der teil der fürs email versenden
//Dateigroeße ermitteln
begin if GetFileSize('C:\dateiname') > 5000 then begin zuständig ist ... Es tritt jetzt zwar kein Fehler auf beim compilieren, aber die datei wird nicht versendet... Die einzige Vermutung die ich habe, ist dass die gepostete Funktion auf die Datei zugreift und deswegen vllt. kein Versenden möglich ist ... Ich bin verzweifelt und hab schon alles Mögliche ausprobiert :cry: Vielleicht hat jemand von euch eine Idee ?? MfG |
Re: SMTP - Datei wird nicht mehr versendet
Herzlich willkommen in der Delphi-PRAXiS, Albert.
Du hast bei der ![]()
Delphi-Quellcode:
Deinen Fehler mag ich aber nicht mit dieser Funktion in Zusammenhang bringen. Hast du mal die Dateigröße geprüft, indem du einen Haltepunkt hinter den Aufruf von GetFileSize() setzt?
function GetFileSize(const fn: TFileName): Int64;
var hFile: THandle; wfd: TWIN32FINDDATA; begin Result := -1; hFile := FindFirstFile(PChar(fn), wfd); if hFile = INVALID_HANDLE_VALUE then Exit else Windows.FindClose(hFile); Result := Int64(wfd.nFileSizeHigh) shl 32 + wfd.nFileSizeLow; end; Freundliche Grüße vom marabu |
Re: SMTP - Datei wird nicht mehr versendet
Hm, hab nochmal deine Änderungen für die Funktion mit reingenommen, aber das Problem bleibt bestehen
(wie du ja selbst schon erwartet hast ;). Was ich vergessen hatte zu erwähnen ist, das die Datei ohne die eigentlich vorgesehene Einbindung von DeleteFile GELÖSCHT wird (nach dem Teil für das Versenden der Mail wollte ich das einbauen), wenn die festgelegte dateigröße erreicht ist, eben ohne aber tatsächlich eine mail zu versenden !!! PS: Wenn ich den Code folgendermaßen schreibe nachdem ich ein edit-feld zur ausgabe eingefügt habe...
Delphi-Quellcode:
dann wird eine mail versendet ... jedoch nicht erst bei etwa 5 kb wie verlangt, sondern bereits bei 0 byte bzw.
GetFileSize('dateiname');
edit1.Text := Inttostr(GetFileSize('dateiname')); if Inttostr(GetFileSize('dateiname')) > '5000' then sobald die datei existiert -.- In Hoffnung auf Hilfe ... MfG Albert |
Re: SMTP - Datei wird nicht mehr versendet
Guten Abend,
Delphi-Quellcode:
Grüße
GetFileSize('dateiname');
edit1.Text := Inttostr(GetFileSize('dateiname')); if GetFileSize('dateiname') > 5000 then // vielleicht geht es so besser? Klaus |
Re: SMTP - Datei wird nicht mehr versendet
Hi,
Nein, denn das ist ja genau das was ich vorher auch hatte ;) Habs grad nochmals versucht ... das merkwürdige dabei ist, dass bei gleichem code teilweise unterschiedliche dinge geschehen ... teilweise wird die mail gesendet, teilweise nicht, teilweise sogar mit der gewünschten größe ... aber auch nur einmal ... UPDATE AHA !!! Ich hab ne mögliche Fehlerquelle gefunden :-D ! Und zwar die vorgegebene Dateigröße ... aus irgendeinem Grund funktioniert alle perfekt wenn ich
Delphi-Quellcode:
setze ... datei wird beim Erreichen dieser Größe gesendet und das funktioniert dann auch stabil!
if GetFileSize('dateiname') > 500 then
(bisher vllt. 10 Versuche ;)) Ich will natürlich wissen woran dass genau liegt ... Hat jemand eine Idee ? Hängts vielleicht mit der Zuweisung der Funktion zu "int64" zusammen ?? Wenn ja wie kann ich diese Größe auch ohne Probleme weiter hoch schrauben ? |
Re: SMTP - Datei wird nicht mehr versendet
Nun, ich habe den Code mal mit einem Button und ShowMessage getestet.
Und dabei habe ich nur die Ausgabe von ShowMessage bekommen wenn die Datei größer als 5000 Byte war. Wie setzt sich denn der 'dateiname' bei Dir zusammen? Wie schaut der Code aus der nach
Delphi-Quellcode:
kommt?
if GetFileSize('dateiname') > 5000 then
Grüße Klaus |
Re: SMTP - Datei wird nicht mehr versendet
AHA !!! Ich hab ne mögliche Fehlerquelle gefunden Very Happy !
Und zwar die vorgegebene Dateigröße ... aus irgendeinem Grund funktioniert alle perfekt wenn ich
Delphi-Quellcode:
setze ... datei wird beim Erreichen dieser Größe gesendet und das funktioniert dann auch stabil!
if GetFileSize('dateiname') > 500 then
(bisher vllt. 10 Versuche Wink) Ich will natürlich wissen woran dass genau liegt ... Hat jemand eine Idee ? Hängts vielleicht mit der Zuweisung der Funktion zu "int64" zusammen ?? Wenn ja wie kann ich diese Größe auch ohne Probleme weiter hoch schrauben ? |
Re: SMTP - Datei wird nicht mehr versendet
Ich glaube an Int64 brauchst Du nicht herumzuschrauben.
Wenn da der Maximalwert erreicht ist, hast Du schon eine sehr große Datei. Aus der Delphi Hilfe: Zitat:
Klaus |
Re: SMTP - Datei wird nicht mehr versendet
Nochmal ich ... :)
Komischerweise funktionierts jetzt auch mit dem Wert 5000, hab aber keine Ahnung warum jetzt plötzlich, da ich eigentlich nichts verändert hab ... :roll: :?: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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