Verbindung mit SMTP Server herstellen und mail versenden
-
Und wie geht es dann weiter?
-
Hallo
siehe zum Beispiel hier.
Weiteres kannst du in der Doku zu dem Indy-Package nachlesen.bis bald
akari
-
Gut, jetzt hab ich die EmailSache. Jetzt noch eine Frage, wie bekomme ich einen Zeilenumbruch im BODY der Email rein?
TStringList *body=new TStringList(); body->Add("Fehler: MANDOC_FILING - Datensatz konnte nicht Ordnungsgemäß eingetragen werden!" + Checkbox); FILINGSYSTEM->IdMessage1->Body=body;
-
Hallo
body->Add("Zeile 1"); body->Add("Zeile 2"); body->Add("Zeile 3");alternativ
body->Add("Zeile 1\r\nZeile 2");bis bald
akari
-
oh Danke! Noch eine einzige letzte winzige Frage. Ich möchte mir die Fehlermeldung der Oracle Datenbank hier im Body anzeigen lassen. Wie kommt man an die ran?
-
Hallo
Woher sollen wir wissen, was für eine Fehlermeldung du meinst?bis bald
akari
-
Indem Du die Meldung aus dem Error-Objekt holst. Kann sein, dass die Oracle Message erst die zweite oder dritte Message ist, je nachdem, welche Zugriffskomponenten und -wege Du gewählt hast.
Die Meldung steht als AnsiString in der Eigenschaft ErrorMessages des Error-Objektes.
Dies setzt natürlich voraus, dass Du die Fehler mit try / catch() abfängst. Solltet Du das nicht machen -> siehe akaris Post.
-
Ja, ich fange sie mit try catch ab.
try { DataExec(CreateInsert(Checkbox, FILINGSYSTEM->Dateiname, Trim(FILINGSYSTEM->Pfadname), FILINGSYSTEM->ID)); } catch(EDBEngineError *dbError) { MessageBox(NULL, dbError->Message.c_str(), "Error:", MB_OK); ErrorMail(Checkbox); }und in ErrorMail() hätte ich sie gerne drin :
void ErrorMail(AnsiString Checkbox) { FILINGSYSTEM->IdSMTP1->Host = AnsiString(FILINGSYSTEM->Settings.strSMTPServName); FILINGSYSTEM->IdMessage1->From->Text = GetLoginName()+"@xyz.de"; FILINGSYSTEM->IdMessage1->Recipients->EMailAddresses = AnsiString(FILINGSYSTEM->Settings.strMailAddress); FILINGSYSTEM->IdMessage1->Subject = "MANDOC-FILING"; TStringList *body=new TStringList(); body->Add("Fehler: MANDOC_FILING - Datensatz konnte nicht Ordnungsgemäß eingetragen werden!"); body->Add(Checkbox + " - " + FILINGSYSTEM->Dateiname + " - " + FILINGSYSTEM->Pfadname); FILINGSYSTEM->IdMessage1->Body=body; try { FILINGSYSTEM->IdSMTP1->Connect(); FILINGSYSTEM->IdSMTP1->Send(FILINGSYSTEM->IdMessage1); FILINGSYSTEM->IdSMTP1->Disconnect(); } catch(...) { Application->MessageBox("Fehler beim Versenden der Nachricht","Mail",MB_OK|MB_ICONSTOP|MB_SYSTEMMODAL);Meine Frage: Kann ich es jetzt einfach übergeben an die Funktion? Geht das?
-
Klar, nußt nur einen weiteren Übergabeparameter für die Fehlermeldung in die Funktion aufnehmen.
Übrigens ist das Error-Objekt kein Zeiger, sondern eine Referenz.
-
try { DataExec(CreateInsert(Checkbox, FILINGSYSTEM->Dateiname, Trim(FILINGSYSTEM->Pfadname), FILINGSYSTEM->ID)); } catch(EDBEngineError *dbError) { MessageBox(NULL, dbError->Message.c_str(), "Error:", MB_OK); ErrorMail(Checkbox, dbError->Message); }Du meinst so? Das macht er aber nicht ich bekomme dann gar keinen Wert!
-
Bitte? Weiß nicht, was Du meinst.