BCB6::Fehler beim Starten von Outlook
-
Hallo!
Programmierumgebung: BCB 6 Outlook 2000 Windows 2kich versuche einen Menüpunkt "Datei->Senden an->E-Mail-Empfänger..." (wie bei MS-Word) zu programmieren.
Folgendes habe ich versucht:
try { outlook->Connect(); } catch(...) { ShowMessage("Outlook kann nicht geöffnet werden!"); return; } TMailItem *mi = new TMailItem(outlook); mi->Display((Variant)1);outlook ist vom Typ TOutlookApplication.
Fehler: "Klasse nicht registriert" Ort: "mi->Display((Variant)1);"Kann es sein, dass diese Fehlermeldung kommt, weil ich Outlook und nicht Outlook Express nutze?
Dann habe ich folgendes versucht:
Variant MSOutlook = CreateOleObject("Outlook.Application") ; Variant MailItem = MSOutlook.OleFunction("CreateItem", (Variant)0); MailItem.OleProcedure("Display");Fehler: "Zugriffsverletzung bei Adresse...." Ort: "Variant MailItem = MSOutlook.OleFunction("CreateItem", (Variant)0);"Ich möchte, wie gesagt, eine Datei per Outlook verschicken, möchte die Nachricht aber vor dem Verschicken bearbeiten können. NMSMTP möchte ich nicht nutzen, da die Eingabe von Mail-Server etc. erforderlich ist.
Kann mir jemande weiterhelfen?
Vielen Dank
-
Hallo
Das Verwenden von OLE für deine Zwecke dafür ist auf jedenfall overkill.
Wenn du nicht den User mit SMTP-Daten quälen willst dann verwende entweder ShellExecute oder MApi.bis bald
akari
-
Danke für den Tip. Ich werde es mal so versuchen.
Aber warum ist das Verwenden von OLE für diesen Zweck overkill?
-
Hallo
- Mit OLE bindest du dich an spezielles Empfängerprogramm. In deinem Fall Outlook. Schon Outlook Express bietet keine OLE-Schnittstelle an.
- Outlook bietet über OLE wesentlich mehr Funktionen an als nur eine Mail zu versenden. Dementsprechend komplex ist die Schnittstelle, Komplexität die du nicht brauchst
- OLE an sich ist kompliziert und schlecht dokumentier, zum Beispiel ist Variant zur Compiletime nicht typsicher.
- Bestenfalls brauchst du mit ShellExecute eine Zeile zum Versenden einer Mail.bis bald
akari
-
Alles klar.
Besten Dank, akari!