SMTP Mail
-
Habe ein Programm geschrieben das Werte aus einer Log-Datei ausliest und bei einer Bestimmten Abweichung eine Email versendet.
Die Überprüfung findet alle 10 Minuten mit einem Thread statt (der dank Gerhard auch funktioniert). Nun läuft der Thread und überprüft die Werte der Datei.Beim ersten Mal läuft alles sauber durch, aber beim zweiten Mal kommt folgende Fehlermeldung:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt ParticleCounterAlarm.exe ist eine Exception der Klasse ESockError aufgetreten. Meldung: '10038:Socket operation on non-socket'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.Er schmiert jedesmal ab, sobald die 2.Emailserie verschickt werden soll
Hat jemand eine Idee woran es liegen könnte oder hat jemand ähnliche Erfahrung mit einem SMTP Mailprogramm ??
Was das Beste an der ganzen Sache ist: Gehe ich mit dem Debugger Schritt für Schritt des Sendeprozesses durch bekomme ich keine Fehlermeldung. Und der Timer startet von neuem. Nur bei Programmdurchlauf ohne Debugger kommt oben genannte Fehlermeldung.FG-GF
-
So sieht die Email-Sende-Funktion aus. Mittlerweile läuft das Programm teilweise bis zu 10 mal durch und stürzt dann mit schon o.g. Fehler wieder ab.
Liegt es an meine Programm oder an diesem Mail-Server, da 10038 eigentlich ein Fehler ist, der beim Server SHutdown auftreten soll und INDY dies sogar abfangen sollte. Ich habe nicht den blassesten Schimmer warum es nach einer unbestimmten Zeit abstürzt. Hat jemand eine Idee warum, oder weiss jemand wie man dies umgehen kann ??void SendMailTo(void) { TIniFile *ini; ini = new TIniFile (ChangeFileExt( Application->ExeName, ".INI" )); TStringList* EmailAdressen; TStringList* WordList = new TStringList(); AnsiString emf=""; int i; WordList->Clear(); Form5->GetEmailAdressen(WordList); if(Form2->NMSMTP1->Connected) Form2->NMSMTP1->Disconnect(); // Auslesen aus TIni-File Form2->NMSMTP1->Host = ini->ReadString("newMail-Einstellungen","ServerAdresse","smtp.mailserver.de"); Form2->NMSMTP1->Port = ini->ReadInteger("newMail-Einstellungen","Port", 25); Form2->NMSMTP1->UserID = ini->ReadString("newMail-Einstellungen","UserID","Admin"); Form2->NMSMTP1->Connect(); for(i=0; i<WordList->Count; i++) { // Sendeabfolge emf=WordList->Strings[i]; Form2->NMSMTP1->PostMessage->FromAddress = ini->ReadString("newMail-Einstellungen","SenderAdresse","absender@yahoo.de"); Form2->NMSMTP1->PostMessage->FromName = ini->ReadString("newMail-Einstellungen","SenderName","User One"); Form2->NMSMTP1->PostMessage->Subject="Alarm ausgelöst"; Form2->NMSMTP1->PostMessage->ToAddress->Text=emf; Form2->NMSMTP1->PostMessage->Body->Text="HILFE"; Form2->NMSMTP1->SendMail(); } // Disconnect Form2->NMSMTP1->Disconnect(); delete ini; return; }
FGGF