Hey Leute,
Ich will eine mail mit .net senden.
Es das installierte Mail Programm aufploppen und der Text vorgegeben
werden.
!!!+ ein Anhang angefügt werden
Ich hätte es mit process.start und mailto versucht.
Dies geht aber nicht, da keine Anhänge unterstützt werden :-/
Mit dem mail spacename geht es auch nicht, da ich ja keinen eigenen Smtp
Client bereitstellen will.
Mapi ist leider auch mehr als überholt und macht immer wieder Probleme
mit Fremdprogrammen (alles andere als Mircosoft).
Was machen?
Ideen?
MaWin schrieb:> Mapi ist leider auch mehr als überholt
Ist es nicht.
> und macht immer wieder Probleme> mit Fremdprogrammen (alles andere als Mircosoft).
Tja, wenn diese Fremdprogramme keinen oder keinen vernünftigen
Mapi-"Treiber" bereitstellen, sind Probleme damit natürlich
vorprogrammiert.
> Was machen?
Ein Mailprogramm benutzen, was eben einen ordentlichen Mapi-Treiber
mitliefert. Und das sind beileibe nicht nur welche aus dem Hause
Microsoft.
MaWin schrieb:> Mapi kann aber nur 32bit!> Müsste ich also einen Wrapper in C++ schreiben.> Gibts da nichts managed?
Warum machst du nicht aus deinem .net-Programm ein 32-Bit-Programm? Das
ist viel einfacher. Man muss dem Compiler bloß sagen, dass man es
beabsichtigt.
c-hater schrieb:> MaWin schrieb:>>> Mapi kann aber nur 32bit!>> Müsste ich also einen Wrapper in C++ schreiben.>> Gibts da nichts managed?>> Warum machst du nicht aus deinem .net-Programm ein 32-Bit-Programm?
Man muss also das ganze Programm in 32 Bit laufen lassen, mit den
entsprechenden Einschränkungen, nur damit es einem anderen Programm
sagen kann, dass es eine Mail verschicken soll?
Rolf M. schrieb:> Man muss also das ganze Programm in 32 Bit laufen lassen
Muss man nicht, man kann halt auch einen Wrapper benutzen.
Oder man kann für die Anwendung bei 64Bit bleiben und Mapi benutzen. Das
gibt es nämlich auch in einer 64Bit-Version, was "MaWin"(wohl Fake)
behauptet hat, stimmt schlicht nicht.
Das erfordert aber dann auch, dass der gewünschte Mail-Client einen
Mapi64-"Treiber" installiert. Outlook in der 64Bit-Version z.B. tut das.
Bei VB (Egal ob Basic o. C++) kommt es immer drauf an, WELCHE Sachen
(meist DLL) man dazu linkt. Also anmelden in der IDE und dann via
#Include den Code mitteilen.
Und dadurch entscheidet man, welches Mail-System man nimmt.
z.b. das Eingebaute.
Da aber nur wenige Leute Mails verschicken wollen, muss man halt das
System einbinden. Selbst Datei-Operationen sind ohne der richtigen
Include kaum möglich.
Schlaumaier schrieb:> Bei VB (Egal ob Basic o. C++) kommt es immer drauf an, WELCHE> Sachen (meist DLL) man dazu linkt. Also anmelden in der IDE und dann via> #Include den Code mitteilen.> Und dadurch entscheidet man, welches Mail-System man nimmt.> z.b. das Eingebaute.> Da aber nur wenige Leute Mails verschicken wollen, muss man halt das> System einbinden. Selbst Datei-Operationen sind ohne der richtigen> Include kaum möglich.
Äääähm. Er schrieb: .net
MaWin schrieb:> Äääähm. Er schrieb: .net
Ist im denn Fall völlig egal.
MS schiebt die Teile immer mehr zueinander.
Ich habe in VB sehr oft Code-Fragmente aus .NET eingebaut, mit
minimalsten Anpassungen wenn überhaupt.
(prx) A. K. schrieb:> "The MAPI/CDO library has been replaced by Exchange Web Services (EWS),> Exchange ActiveSync (EAS), and Representational State Transfer (REST)*> APIs.">> https://docs.microsoft.com/en-us/exchange/new-features/discontinued-features?view=exchserver-2019
Nunja, damit ist man dann allerdings praktisch endgültig auf MS-Clients
festgelegt. Das mag und will Microsoft natürlich, geht aber so nicht
durch. Wenn sie das konsequent durchziehen würden, bekämen sie massive
Probleme mit den Kartellbehörden.
Deswegen wird es das Mapi auch weiterhin geben. Sieha halt z.B.
Mapi-Support von Outlook64.
c-hater schrieb:> Nunja, damit ist man dann allerdings praktisch endgültig auf MS-Clients> festgelegt.
Im Gegenteil. Das fusst doch auf HTTPS, XML und SOAP. EAS (ActiveSync)
macht seit langem jedes Handy, wenn am Ziel Exchange lauert, oder
Kompatibles. Du bist halt beim Server festgelegt. Aber das ist hier
Vorgabe, weil es kein SMTP sein soll.
(prx) A. K. schrieb:> EAS (ActiveSync)> macht seit langem jedes Handy, wenn am Ziel Exchange lauert
Genau dann und nur dann...
> Du bist halt beim Server festgelegt.
Ja. Das Ziel des TO war doch aber, den jeweils vorhandenen lokalen
Mail-Client zu benutzen und dem den Rest zu überlassen, oder?
Und auch nur so kann es universell gehen. Bei uns in der Domäne z.B.
(und das wird auf praktisch jede gut administrierte Firma zutreffen) ist
es überhaupt nicht möglich, an der dafür vorgesehenen Infrastruktur
vorbei irgendwelche Mails (über welches API auch immer) zu versenden.
Wäre ja noch schöner.
c-hater schrieb:> Ja. Das Ziel des TO war doch aber, den jeweils vorhandenen lokalen> Mail-Client zu benutzen und dem den Rest zu überlassen, oder?
Mir Anhang. Und das kriegt man mit MAPI?
c-hater schrieb:> Wäre ja noch schöner.
Ja, das ist aber eine andere Frage. Ich hab's in Jobs bisher mit BLAT
gemacht. Aber das ist eben SMTP und muss dazu freigegeben sein.
(prx) A. K. schrieb:> Mir Anhang. Und das kriegt man mit MAPI?
Mir->Mit. Tippfehler erkannt und Sinn der Frage verstanden.
Antwort: Klar. Mapi hat das schon immer (? zumindest seit unzähligen
Jahren) möglich gemacht. Und es funktioniert auch heute noch so wie
immer. Und auch mit 64Bit-Binaries.
Der Trick ist halt (wenig überraschend): der Mapi-Provider muss das
implementieren, dann kann es der Mapi-Client auch benutzen.
Praktisch jeder Anbieter kommerzieller Mail-Lösungen für Windows hat es
schon vor Jahren geschafft, einen entsprechenden Mapi-"Treiber" für
seine Lösung bereit zu stellen. Interessanterweise durchaus auch in
Misch-Architektur. Die eigentliche Mail-Anwendung ist z.B. noch 32Bit,
stellt aber trotzdem sowohl ein Mapi32 als auch ein Mapi64 zur
Verfügung.
Es geht also. Winzigweich selber schafft es allerdings nicht. Will es
wohl garnicht schaffen, sondern Office 365 pushen. Mit all dem
hochgradig unsicheren Gedöhns der "Web-Technologien". Bisher hat's zwar
eher die "on premise"-Installationen von Exchange-Server hart erwischt,
aber es ist vorhersehbar, das irgendwann auch Microsofts Tafelsilber in
Gefahr ist. Reine Komplexitätsbetrachtungen lehren das.
c-hater schrieb:> (prx) A. K. schrieb:>>> Mir Anhang. Und das kriegt man mit MAPI?
Vor 20 Jahren mit VB-6.0 hat das jedenfalls bei mir problemlos geklappt.
Einzige Bedingung (wie hier oft erwähnt) man muss die MAPI-Schnittstelle
aktivieren. Diese Schnittstelle legt gleichzeitig das
Standard-Mapi-E-Mail-Programm fest.
Einfach gesagt. Das letzte Programm auf den man die Mapi-Schnittstelle
aktiviert hat, bekommt von deinen Prg. die Email-DATEN !!! Übermittelt
INKL. "VERWEIS auf den Anhang".
Verweis auf den Anhang bedeutet das der Anhang NICHT direkt übergeben
wird, sondern als FILE. Das Email-Prg. hängt das File das mit den
Pfadnamen !!! übergeben wurde dann an die Mail normal dran.
Und DAS geht sogar bei Exchange.
https://docs.microsoft.com/de-de/exchange/recipients-in-exchange-online/manage-user-mailboxes/enable-or-disable-mapi
Zitat : "Sie können das Exchange Admin Center oder Exchange Online
PowerShell verwenden, um die MAPI für ein Benutzerpostfach zu aktivieren
oder zu deaktivieren. Wenn die MAPI aktiviert ist, kann Outlook oder
anderen MAPI-E-Mail-Clients auf das Postfach eines Benutzers zugegriffen
werden. "
(prx) A. K. schrieb:> Ja, das ist aber eine andere Frage. Ich hab's in Jobs bisher mit BLAT> gemacht. Aber das ist eben SMTP und muss dazu freigegeben sein.
Corkscrew existiert, kann aber ein Grund für die fristlose Kündigung
sein. ;-)
Nun, solche Tools werden's wohl sein muessen, wenn wir (Europa)
naechstens eine kleine Demo/Willensbezeugung durchziehen wollen. Jeder
schiebt mal 100 Mails gegen Osten ... pro Zeiteinheit.