Mail via anderem Programm aus .net senden

Gast #6965882
Lesenswert?

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?
Gast #6965991
Lesenswert?

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.
Gast #6966030
Lesenswert?

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.
#6966075
Lesenswert?

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?
Gast #6966099
Lesenswert?

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.
Gast #6966412
Lesenswert?

Schlaumaier schrieb:
> Ganz einfach.
> Hier ist ein Beispiel-Code
> https://www.vbarchiv.net/tipps/tipp_804-email-versenden-vbnet.html
> Und hier eine Alternative
> 
https://www.vb-paradise.de/index.php/Thread/6931-E-Mail-senden-per-SMTP-Simple-Mail-Transfer-Protocol/

MaWin schrieb:
> Mit dem mail spacename geht es auch nicht, da ich ja keinen eigenen Smtp
> Client bereitstellen will.
Gast #6966414
Lesenswert?

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.
Gast #6966422
Lesenswert?

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
Gast #6966765
Lesenswert?

(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.
Gast #6966898
Lesenswert?

(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.
Gast #6966963
Lesenswert?

(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.
Gast #6967361
Lesenswert?

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. "

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren