Ermittlung des Standard-Mailprogramms
Moderator: Moderatoren
- Lewi
- 1000 working lines a day
- Beiträge: 830
- Registriert: Di, 07. Feb 2006 14:10
- Wohnort: Hamburg
- Danksagung erhalten: 2 Mal
Ermittlung des Standard-Mailprogramms
Hi Folks,
hat jemand eine Idee, wie man automatisch den Programmpfad für das Standard-Mailprogramm ermitteln kann?
Mir kam die Idee über die Windows API-Funktion „FindExecutable()“ Aber welche „Extension“ ist mit Outlook bzw. Outlook Express verknüpft?
Gruß, Olaf
hat jemand eine Idee, wie man automatisch den Programmpfad für das Standard-Mailprogramm ermitteln kann?
Mir kam die Idee über die Windows API-Funktion „FindExecutable()“ Aber welche „Extension“ ist mit Outlook bzw. Outlook Express verknüpft?
Gruß, Olaf
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Ermittlung des Standard-Mailprogramms
hi,
"Datenbank" und die *.DBX (von OE) kann nicht "direkt" ansprechen.
gruss by OHR
Jimmy
ich mache es mit der Registry :Lewi hat geschrieben: hat jemand eine Idee, wie man automatisch den Programmpfad für das Standard-Mailprogramm ermitteln kann?
Code: Alles auswählen
HKEY_CLASSES_ROOT\mailto\shell\open\command
ich denke nicht das es eine "Extension" gibt ... es geht ja alles in dieMir kam die Idee über die Windows API-Funktion „FindExecutable()“ Aber welche „Extension“ ist mit Outlook bzw. Outlook Express verknüpft?
"Datenbank" und die *.DBX (von OE) kann nicht "direkt" ansprechen.
gruss by OHR
Jimmy
- Lewi
- 1000 working lines a day
- Beiträge: 830
- Registriert: Di, 07. Feb 2006 14:10
- Wohnort: Hamburg
- Danksagung erhalten: 2 Mal
Hi Jimmy,
Dein Tipp ist das, wonach ich gesucht habe. Danke.
Anmerkung: Die Extension ".EML" ist mit OE verknüpft, wenn OE die einzige Mail-Anwendung auf einem System ist. Daher kam mir der Gedanke, über eine Extension und "FindExecutable" die Mail-Anwendung zu ermitteln. Dein Weg ist natürlich weitaus einfacher.
Viele Grüße
Olaf
Dein Tipp ist das, wonach ich gesucht habe. Danke.
Anmerkung: Die Extension ".EML" ist mit OE verknüpft, wenn OE die einzige Mail-Anwendung auf einem System ist. Daher kam mir der Gedanke, über eine Extension und "FindExecutable" die Mail-Anwendung zu ermitteln. Dein Weg ist natürlich weitaus einfacher.
Viele Grüße
Olaf
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
hi,
Extension benutzen z.b. ACDSee welcher meint es seit ein Grafik
Format ...
da sind mir die "HKEY_CLASSES_ROOT" Einträge "sicherer" da
die wohl (so meine ich) "zuerst" ausgeführt werden.
gruss by OHR
Jimmy
... aber leider gibt es noch andere Programme die auch ".EML" alsLewi hat geschrieben: Anmerkung: Die Extension ".EML" ist mit OE verknüpft, wenn OE die einzige Mail-Anwendung auf einem System ist.
Extension benutzen z.b. ACDSee welcher meint es seit ein Grafik
Format ...
da sind mir die "HKEY_CLASSES_ROOT" Einträge "sicherer" da
die wohl (so meine ich) "zuerst" ausgeführt werden.
gruss by OHR
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
eMail mit xBase schreiben
Habt Ihr vielleicht auch eine einfache Lösung, wie man mit xBase++ eine Mail mit Empfänger,Betreff,Text und Anhang abschicken kann?
Uli
Uli
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo,
wenn du keine prof sub und damit asinet hast, wird dir eine Toolbox von marshalsoft helfen. ich meine www.marschalsoft.com, ansonsten auf den 3p Seiten von Alaska findest du den Verweis und ich glaube auch eine Testversion.
wenn du keine prof sub und damit asinet hast, wird dir eine Toolbox von marshalsoft helfen. ich meine www.marschalsoft.com, ansonsten auf den 3p Seiten von Alaska findest du den Verweis und ich glaube auch eine Testversion.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: eMail mit xBase schreiben
hi,
helfen ? Wenn ja SOCMAPI. Damit kannst deine Mail bis in die "OutBox"
deines Mailprogrammes bekommen.
übrigens sollte man SOCMAPI im Thread laufen lassen ...
gruss by OHR
Jimmy
meist du wirklich "abschicken" oder würde dir das "bereitstellen" schonUliTs hat geschrieben: Habt Ihr vielleicht auch eine einfache Lösung, wie man mit xBase++
eine Mail mit Empfänger,Betreff,Text und Anhang abschicken kann?
helfen ? Wenn ja SOCMAPI. Damit kannst deine Mail bis in die "OutBox"
deines Mailprogrammes bekommen.
übrigens sollte man SOCMAPI im Thread laufen lassen ...
gruss by OHR
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16511
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Ermittlung des Standard-Mailprogramms
Hallo Jimmy,
Wie hast Du das mit dem eigenen Thread gelöst? Einfach eine Funktion, die das Senden übernimmt und die dann an den entsprechenden Stellen per Thread():start(mailingfunktion) aufgerufen?
Übrigens hat mal jemand hier im Forum geschrieben (ich glaube, Wolfgang - aber ich habe es nicht mehr gefunden), dass der Aufruf von SOCMAPI die Einstellung für das aktuelle Verzeichnis (CurDir()) verändert!!!
Da habe ich mich zum Glück noch dran erinnert, als eine unserer Kundinnen einen Programmabsturz hatte - Sie schickte mir dann mal die XPPERROR.LOG und ich habe gesehen, dass Ihr Programm in den Programmteil eigentlich gar nicht reinlaufen kann!!!
Bis ich ihr dann mal eine Version geschickt habe, die in dem Programmteil ein Log schreibt. Sie startete das Programm, führte die Schritte aus, und wollte mir dann nach dem Absturz das log schicken, das es aber nicht gab! Wir haben dann telefoniert, Sie suchte nach der XPPERROR.LOG und fand die aktuellste dann in dem Verzeichnis, in dem Ihr Standardmailprogramm installiert war. Das wäre auch nicht weiter schlimm, wäre das nicht auf einer anderen Partition installiert gewesen, als unser Programm!!
Dadurch, das ich mich dunkel an die o.g. Aussage erinnern konnte, war der "Fehler" dann sehr schnell behoben - vielen Dank nochmals demjenigen, der das damals erwähnt hatte...
Viele Grüße,
Martin
warum bist Du dieser Meinung? Nur, weil das Programm sonst bis zum Absenden der Mail blockiert ist? Vielleicht ist aber genau das auch sinnvoll (abhängig vom Aufgabengebiet)...AUGE_OHR hat geschrieben:übrigens sollte man SOCMAPI im Thread laufen lassen ...
Wie hast Du das mit dem eigenen Thread gelöst? Einfach eine Funktion, die das Senden übernimmt und die dann an den entsprechenden Stellen per Thread():start(mailingfunktion) aufgerufen?
Übrigens hat mal jemand hier im Forum geschrieben (ich glaube, Wolfgang - aber ich habe es nicht mehr gefunden), dass der Aufruf von SOCMAPI die Einstellung für das aktuelle Verzeichnis (CurDir()) verändert!!!
Da habe ich mich zum Glück noch dran erinnert, als eine unserer Kundinnen einen Programmabsturz hatte - Sie schickte mir dann mal die XPPERROR.LOG und ich habe gesehen, dass Ihr Programm in den Programmteil eigentlich gar nicht reinlaufen kann!!!
Bis ich ihr dann mal eine Version geschickt habe, die in dem Programmteil ein Log schreibt. Sie startete das Programm, führte die Schritte aus, und wollte mir dann nach dem Absturz das log schicken, das es aber nicht gab! Wir haben dann telefoniert, Sie suchte nach der XPPERROR.LOG und fand die aktuellste dann in dem Verzeichnis, in dem Ihr Standardmailprogramm installiert war. Das wäre auch nicht weiter schlimm, wäre das nicht auf einer anderen Partition installiert gewesen, als unser Programm!!
Dadurch, das ich mich dunkel an die o.g. Aussage erinnern konnte, war der "Fehler" dann sehr schnell behoben - vielen Dank nochmals demjenigen, der das damals erwähnt hatte...
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Ermittlung des Standard-Mailprogramms
Ich war's mit dem Hinweis zum Wechsel des "aktuellen Verzeichnisses".
Uli
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Ermittlung des Standard-Mailprogramms
Ich lege es nur in den Ausgang und will dann zurück in meine Anwendung.Martin Altmann hat geschrieben:warum bist Du dieser Meinung? Nur, weil das Programm sonst bis zum Absenden der Mail blockiert ist? Vielleicht ist aber genau das auch sinnvoll (abhängig vom Aufgabengebiet)...AUGE_OHR hat geschrieben:übrigens sollte man SOCMAPI im Thread laufen lassen ...
Ich baue mir zunächst die Adresse, Betreff, Text etc. zusammen und dannMartin Altmann hat geschrieben: Wie hast Du das mit dem eigenen Thread gelöst? Einfach eine Funktion, die das Senden übernimmt und die dann an den entsprechenden Stellen per Thread():start(mailingfunktion) aufgerufen?
Code: Alles auswählen
//
// so und nun einen Thread starten, dann funktioniert es
//
oMAPI := Thread():new()
oMAPI:start( "SENDNOW", cAdresses, cSubject, cMessage, cAttachments, nFlag )
RETURN
PROCEDURE SENDNOW( cAdresses, cSubject, cMessage, cAttachments, nFlag )
LOCAL nErr
//if not already logged on, Logon to new MAPI session
IF DllExecuteCall( scDLLSocMapiIsLoggedOn ) == 0
IF ( nErr := DllExecuteCall( scDLLSocMapiLogon ) ) != SUCCESS_SUCCESS
NOTIFYERROR( nErr )
RETURN
ENDIF
ENDIF
BEGIN SEQUENCE
//-- Store mail directly to outbox
nErr := DllExecuteCall( scDLLSocMapiSendMail, cAdresses, cSubject, cMessage,;
cAttachments, nFlag )
IF nErr != SUCCESS_SUCCESS .AND. nErr != MAPI_USER_ABORT
BREAK nErr
ENDIF
RECOVER USING nErr
NotifyError( nErr )
END SEQUENCE
DllExecuteCall( scDLLSocMapiLogoff )
RETURN
tja hättes du das heute morgen schon geschrieben ... weil das mit dem *.BAT ja nicht klappteMartin Altmann hat geschrieben: Übrigens hat mal jemand hier im Forum geschrieben (ich glaube, Wolfgang - aber ich habe es nicht mehr gefunden), dass der Aufruf von SOCMAPI die Einstellung für das aktuelle Verzeichnis (CurDir()) verändert!!!
hab ich ja mal "auf die schnelle" paar Zeile dann mit RunShell() geschrieben und war mir sicher
das es "funktioniert". Leider habe ich dabei ebenfalls übersehen "wo" ich die Application in dem
Augenblick befindet ... da lag nun "SwapIt.TXT" ... nur leider im Verzeichnis von MapPoint
Wenn man also activeX oder DllCall benutzt dann sollte man auf die Verzeichnisse achten !!!
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16511
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Ermittlung des Standard-Mailprogramms
Hallo Uli,
dann Dir nochmals vielen Dank!!
Jimmy,
danke für Deinen Code. So wie ich das sehe, kannst Du also aus Deinem Programm heraus beliebig viele Mails "starten", ohne eine wirklich abzusenden - Du hast dann also mehrere offene und begonnene Mails in eigenen Fenstern (in Deinem Outlook). Was passiert denn nun, wenn Du Dein Programm beendest? Dann werden die einzelnen Threads ja auch beendet - aber die begonnenen Mails (die Outlook-Fenster) bleiben doch trotzdem noch offen und können verschickt werden - oder?
Und das Problem mit dem Verzeichniswechsel hatte ich ja bereits am Samstag Nachmittag erkannt und gelöst - das Problem war ja, erstmal zu merken, dass das Outlook bei ihr auf einer anderen Partition liegt, als das Programm und dann habe ich mich ja auch sofort an das Posting hier erinnert...
Viele Grüße,
Martin
dann Dir nochmals vielen Dank!!
Jimmy,
danke für Deinen Code. So wie ich das sehe, kannst Du also aus Deinem Programm heraus beliebig viele Mails "starten", ohne eine wirklich abzusenden - Du hast dann also mehrere offene und begonnene Mails in eigenen Fenstern (in Deinem Outlook). Was passiert denn nun, wenn Du Dein Programm beendest? Dann werden die einzelnen Threads ja auch beendet - aber die begonnenen Mails (die Outlook-Fenster) bleiben doch trotzdem noch offen und können verschickt werden - oder?
Und das Problem mit dem Verzeichniswechsel hatte ich ja bereits am Samstag Nachmittag erkannt und gelöst - das Problem war ja, erstmal zu merken, dass das Outlook bei ihr auf einer anderen Partition liegt, als das Programm und dann habe ich mich ja auch sofort an das Posting hier erinnert...
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Ermittlung des Standard-Mailprogramms
moin,
das Outlook "Fenster" mit der Mail Pop ja "onTop" auf. Darin kann ich dann noch Änderrungen
vornehmen oder verwerfen wozu der User eine Aktion auslösen MUSS, den solange OE geöffnet
ist ist die Application "angehalten" (was man hier im Code nicht sieht ) und wartet auf das Ende
von OE ... es sei den es ist kein User "da" dann kommt "irgendwann" ein Timeout und er bricht
die Aktion ab.
Ich bin mir nicht mehr sicher warum Thread, aber ich glaube es hatte was mit meinen Events zu
tun sodas sich, ohne Thread, nach SocMapi "nichts mehr reagiert", aber nicht abegstürzt ist da
die "Timeout"s noch funktionieren und er irgendwann "ausloggt"
Ich will also keine "massen" Email versenden, sondern brauche die "Kontroll" des User und deshalb
wird die auch "angezeigt" statt die gleich in "Ausgang" zu legen (was ja auch geht).
Wenn ich nun "unbeaufsichtigt" Email´s senden will benutze ich eigentlich SEE32, den da hab ich
ja eine "Kontrolle" die ich über OE nicht habe (bricht mittendrin ab und bleibt in dem Bild stehen)
nope eigentlich geht es immer nur mit einer Email. (theoretisch ja, aber ich nutze es anders)Martin Altmann hat geschrieben: danke für Deinen Code. So wie ich das sehe, kannst Du also aus Deinem Programm heraus beliebig viele Mails "starten", ohne eine wirklich abzusenden - Du hast dann also mehrere offene und begonnene Mails in eigenen Fenstern (in Deinem Outlook).
das Outlook "Fenster" mit der Mail Pop ja "onTop" auf. Darin kann ich dann noch Änderrungen
vornehmen oder verwerfen wozu der User eine Aktion auslösen MUSS, den solange OE geöffnet
ist ist die Application "angehalten" (was man hier im Code nicht sieht ) und wartet auf das Ende
von OE ... es sei den es ist kein User "da" dann kommt "irgendwann" ein Timeout und er bricht
die Aktion ab.
Ich bin mir nicht mehr sicher warum Thread, aber ich glaube es hatte was mit meinen Events zu
tun sodas sich, ohne Thread, nach SocMapi "nichts mehr reagiert", aber nicht abegstürzt ist da
die "Timeout"s noch funktionieren und er irgendwann "ausloggt"
Ich will also keine "massen" Email versenden, sondern brauche die "Kontroll" des User und deshalb
wird die auch "angezeigt" statt die gleich in "Ausgang" zu legen (was ja auch geht).
Wenn ich nun "unbeaufsichtigt" Email´s senden will benutze ich eigentlich SEE32, den da hab ich
ja eine "Kontrolle" die ich über OE nicht habe (bricht mittendrin ab und bleibt in dem Bild stehen)
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16511
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Ermittlung des Standard-Mailprogramms
Hallo Jimmy,
aah - OK. Aber genau das Verhalten legt er bei mir auch an den Tag - ohne Aufruf in einem Thread.
Viele Grüße,
Martin
aah - OK. Aber genau das Verhalten legt er bei mir auch an den Tag - ohne Aufruf in einem Thread.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.