Forum: PC-Programmierung Mail via anderem Programm aus .net senden


von MaWin (Gast)


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?

von c-hater (Gast)


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.

von MaWin (Gast)


Lesenswert?

Mapi kann aber nur 32bit!
Müsste ich also einen Wrapper in C++ schreiben.
Gibts da nichts managed?

von c-hater (Gast)


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.

von MaWin (Gast)


Lesenswert?

Kunde will 64bit.
32bit wird über kurz und lang aussterben.
Also warum auf ein altes Pferd setzen?

Ein C++ Wrapper ist ja auch nur ein Workaround.

von Rolf M. (rmagnus)


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?

von JJ (Gast)


Lesenswert?

Je nachdem was die konkrete Anfordwerung ist könnstest du auch eine Mail 
per IMAP in den Drafts Folder schieben

von Schlaumaier (Gast)


Lesenswert?


von c-hater (Gast)


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.

von MaWin (Gast)


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.

von Schlaumaier (Gast)


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.

von MaWin (Gast)


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

von MaWin (Gast)


Lesenswert?

https://docs.microsoft.com/en-us/previous-versions//dd296734(v=vs.85)?redirectedfrom=MSDN

The use of Simple MAPI is discouraged. It may be altered or unavailable 
in subsequent versions of Windows

von (prx) A. K. (prx)


Lesenswert?

"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

von Schlaumaier (Gast)


Lesenswert?

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.

von Zeno (Gast)


Lesenswert?

MaWin schrieb:
> Äääähm. Er schrieb: .net

Äääääääääääähhhhm - .net funktioniert mit so ziemlich jeder gängigen 
Programmiersprache u.a. auch mit VB - siehe hier 
https://www.it-visions.de/dotnet/produkte/sprachen.aspx

von c-hater (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

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.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

PS: .Net Code für ActiveSync fand ich mühelos im Web.
https://github.com/alireza-es/ActiveSync

: Bearbeitet durch User
von c-hater (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

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?

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

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.

von c-hater (Gast)


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.

von Schlaumaier (Gast)


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

von Nur_ein_typ (Gast)


Lesenswert?

(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. ;-)

von Flachtroll (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.