Laden...

Standart Mail-Programm aufrufen & Mail-Addy, Betreff & Anhang übergeben

Erstellt von DjBepy vor 17 Jahren Letzter Beitrag vor 16 Jahren 16.259 Views
D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren
Standart Mail-Programm aufrufen & Mail-Addy, Betreff & Anhang übergeben

Servus!

Nach Suche quer durchs Forum & Google wende ich mich mal wieder an Euch:

Wie kann ich aus meinem Programm heraus dem Standart-Mail-Programm in Windows ansprechen & dem die Empfänger-Mail-Addy, den Subjekt & eine anzuhängende Datei übergeben?

Ich habe hier & da was über die MAPI gelesen . . . werde aus dem Ganzen aber mal wieder nicht Schlau.

Ich meine, so schwer kan es ja nicht sein, in HTML ist es ja auch nur ne Zeile . . .

*Machts gut und danke für den vielen Fisch*

6.862 Beiträge seit 2003
vor 17 Jahren

Wie wärs mit

Process.Start("mailto:abc@def.gh");

😁

Baka wa shinanakya naoranai.

Mein XING Profil.

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

Hey, das klingt doch mal Klasse! 😁

Weiß jemand wie ich darüber ein Anhang mitgebe?

*Machts gut und danke für den vielen Fisch*

460 Beiträge seit 2004
vor 17 Jahren
6.862 Beiträge seit 2003
vor 17 Jahren

Gar net 😉

Dann musst die MailMessage Klasse im Namespace System.Net.Mail benutzen, aber ist auch leicht zu handhaben.

Baka wa shinanakya naoranai.

Mein XING Profil.

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

Hmm . .. kennt VS.NET 2003 nicht . . . oder muss ich da noch was einbinden? Also System.Net. kennt der aber Mail nicht mehr . . .

*Machts gut und danke für den vielen Fisch*

6.862 Beiträge seit 2003
vor 17 Jahren

Ja, des passende Assembly dazu. Sagt dir die Fehlermeldung doch auch 🙂 Nur weil man nen Namespace angibt, heißt es noch lange net das auch alle Assemblies wo es den namespace gibt, auch automatisch eingebunden werden.

Baka wa shinanakya naoranai.

Mein XING Profil.

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

Und was ist, wenn man gar keine Fehlermeldung bekommt? 😉 Ich versuchte es ja direkt einzugeben & zu gucken was der hat! 😉

Und was ist das entsprechende Assembly dafür?

*Machts gut und danke für den vielen Fisch*

6.862 Beiträge seit 2003
vor 17 Jahren

Upps, mein Fehler, des heißt System.Web.Mail 😁
Und die passende Referenz ist dann System.Web.dll

Aber dafür ist ja die MSDN Library da, kann jeder mal reinschaun =) (Wink mitm Zaunpfahl 😄)

Baka wa shinanakya naoranai.

Mein XING Profil.

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

Brauchst nicht Winken, da gucke ich per Standard rein . . . nur werde ich mal wieder daraus nicht schlau . . .

*Machts gut und danke für den vielen Fisch*

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

So, habe mal einiges gefunden . . . habe ein Anhang erstellt, habe ne Mail erstellt, aber das mit dem schicken ist so ne Sache . . . das scheint ja nur über STMPMail.Send gehen . .. und dafür muss ich ja ein SMTP-Server angeben . . . ich will aber gar nicht, das C# das verschickt, ich will ja, das C# das an das standart Mail-Programm (Outlook, Thunderbird, Netscpae oder was auch immer) übergibt . . .

Mein Code sieht bis jetzt soweit aus:


                MailAttachment ma = new MailAttachment(strgZipName+".gpg");
				
				MailMessage mm = new MailMessage();
				mm.Attachments.Add(ma);
				mm.To = "DRG-Datenstelle@mmm.com";
				string strgMailSubject = strgZipName.Replace(".zip", "");
				mm.Subject = strgMailSubject;

*Machts gut und danke für den vielen Fisch*

6.862 Beiträge seit 2003
vor 17 Jahren

In HTML kannst doch auch nur Subject usw. angeben, aber Attachement geht doch auch net oder?

Baka wa shinanakya naoranai.

Mein XING Profil.

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

Original von talla
In HTML kannst doch auch nur Subject usw. angeben, aber Attachement geht doch auch net oder?

Ich habe nix gefunden . . . aber was willste mir damit sagen? Entweder oder? Also, ich weiß das es in Java geht, warum soll es also nicht in C# gehen?

*Machts gut und danke für den vielen Fisch*

6.862 Beiträge seit 2003
vor 17 Jahren

Na wie geht des denn in Java?

Im ersten Beitrag meintest du es wäre nur eine Zeile in HTML 🙂 Des meint ich damit.

Jetzt weiß ich übrigens wie ich auf System.Net.Mail kam, des gibts neu ab 2.0 🙂

Baka wa shinanakya naoranai.

Mein XING Profil.

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

Java ist aber nicht gleich C#! 😉

Zu HTML: Ich meinte ja nur! 😉 Hätte ja sein können, das es in C# ähnlich easy ist! 😉

*Machts gut und danke für den vielen Fisch*

6.862 Beiträge seit 2003
vor 17 Jahren

Java versteh ich zumindest aber auch, kannst ja mal posten wie du es da machen würdest, genauso wie du es in HTML machen würdest. Ich kenn da nämlich kein Weg für nen Attachement.

Baka wa shinanakya naoranai.

Mein XING Profil.

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

Du, da muss ich passen . . . mein Kollege, welcher Java programmiert, meinte das es über Java funktioniere . . . ich frag Ihn mal . . .

*Machts gut und danke für den vielen Fisch*

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

@Talla: Habe mal mein Kollegen gefragt, der löst das über MAPI . . . wie ich am Anfang schon mal erwähnte . . . nur finde ich da irgendwie nix gescheites zu . . . jemmand zufällig was passendes parat?

*Machts gut und danke für den vielen Fisch*

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 17 Jahren

So, habe der Rätsels Lösung gefunden! 🙂

Ich habe es im Endeffekt über SimpleMAPI gelöst 🙂

Also, man lädt sich hier den SourceCode runter: http://www.codeproject.com/csharp/simplemapidotnet.asp

Dann "importiert" man die MapiApi.cs (in VS.NET: Rechte Maus im Projektappen-Explorer auf das Projekt -> Hinzufügen -> Vorhandenes Element hinzufügen -> MapiApi.cs.), dann noch

using Win32Mapi; 

und schon hat man alles was man braucht.

Der Code fürs versenden übers Standart-Mail-Programm mit Anhang sieht dann so aus:


Mapi ma = new Mapi();
ma.Attach(StringAnhangInklDateipfad);
ma.AddRecip(StringEmpängerMailAdresse, null, false);/*False wenn es die Hauptadresse ist, true wenn es CC sein soll*/
ma.Send(StringMailBetreff, StringMailText);

Und gut is! 🙂

*Machts gut und danke für den vielen Fisch*

1.820 Beiträge seit 2005
vor 17 Jahren
Problem mit SimpleMapi.NET

Hallo!

Hat sich schonmal jemand intensiver mit SimpleMapi.NET beschäftigt. Das Versenden klappt ja prima, aber beim Lesen von Mails bekomm ich immer nur die erste Mail angezeigt, und die auch nur ohne Mailtext.
Als Fehlercode bekomme ich beim Abruf ab der zweiten Mail immer 0x10 (No Messages) zurück. Hat jemand eine Idee, woran das liegen könnte, oder evtl. mal einen eigenen Mapi-Wrapper geschrieben?

Edit: Hab' rausgefunden, warum ich immer die erste Nachricht bekomme: Ich benutze Thunderbird (hatte ich vergessen, zu erwähnen), und da gibt's noch ein paar Probleme mit der MAPI-Umsetzung.

Nobody is perfect. I'm sad, i'm not nobody 🙁

3.825 Beiträge seit 2006
vor 17 Jahren

Hallo,

ich möchte auch übers Standard-Email-Programm versenden mit Dateianhang, es soll aber das Emailversandfenster aufgehen, so dass man noch einen Text eintragen kann.

Weiss jemand wie man das hinkriegt ?

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

B
1.529 Beiträge seit 2006
vor 17 Jahren

Mittels Process.Start folgenden Link starten: mailto:adress@server.tld&cc=...&bcc=...&subject=test&body=see file&attachment=file:///c:/test.txt

Bei Outlook funktioniert das, Thunderbird verschluckt das Attachment.
Dann kann man aber über thunderbird -compose "to=adress@server.tld&cc=...&bcc=...&subject=test&body=see file&attachment=file:///c:/test.txt" gehen...

V
27 Beiträge seit 2005
vor 17 Jahren

Wir verwenden für das Lesen und Schreiben von E-Mails dieses Projekt
OpenPop.
Einfach zu verwenden und kann alles was wir benötigen.

HTH

3.825 Beiträge seit 2006
vor 17 Jahren

Danke Borg,

werde ich gleich mal testen !

Vorauler : Zum Versenden benutze ich einen eigenen Client, der auf der Klasse System.Net.Mail aufbaut. Diese Klasse kann eigentlich alles was ich brauche.
Es kann aber nun vorkommen dass Benutzer nicht meinen Client verwenden wollen, sondern den Client von ihrem Standard-Email-Programm, z.B. Groupwise, David, Outlook oder wie es heissen mag.
In diesem Fall werde ich die Befehlszeile wie Borg beschrieben hat benutzen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

3.825 Beiträge seit 2006
vor 16 Jahren

Hallo Borg,

klappt leider nicht !

Ich habe alle Kombinationen probiert die mir so eingefallen sind :

for (int i = 0; i < 6; i++)
{
	string att = "";
	if (i == 0) att = "&attachment=file:///c:/test.txt";
	if (i == 1) att = "&attachment=\"file:///c:/test.txt\"";
	if (i == 2) att = @"&attachment=c:\test.txt";
	if (i == 3) att = "&attachment=test.txt";
	if (i == 4) att = "&attachment=\"test.txt\"";
	if (i == 5) att = "&attachment=file:///test.txt";
	ProcessStartInfo pr = new ProcessStartInfo();
	pr.FileName = "mailto:hans<hans@test.de>&subject=Datei Nummer xxx&body=Hier die Datei !!!" + att;
	Process.Start(pr);
}

Funktioniert weder mit Outlook 2007 noch mit Outlook Express. Der Dateianhang ist nie dabei.

Hat da jemand noch 'ne Idee ?

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

1.820 Beiträge seit 2005
vor 16 Jahren

Hallo!

@BerndFfm:
Hast du denn auch schon SimpleMapiDotNet von CodeProject probiert.
Damit klappt das Versenden einer Mail inkl. Anzeige des Fensters zumindest mit Thunderbird wunderbar.

Um den Dialog anzuzeigen, muss als Flag die folgende Konstante

        private const int MapiDialog = 0x00000008;

bei MapiSendMail angegeben werden.

Nobody is perfect. I'm sad, i'm not nobody 🙁

D
386 Beiträge seit 2007
vor 16 Jahren

Komplett OT:

Original von BerndFfm
...sondern den Client von ihrem Standard-Email-Programm, z.B. Groupwise, David, Outlook oder wie es heissen mag.

Nicht hauen (es ist ja auch albern): Ich hab mal bei Tobit gearbeitet.. Immerhin unterscheidest du schon zwischen Firma und Produkt (die meisten behaupten sie haetten "Tobit" gekauft oder als Mailloesung im Haus), aber David ist ein Serverprodukt, Outlook ein Client. David und Exchange oder (zumindest als ich da mal aktuell war) Tobit Infocenter und Outlook ware hier geschickter.

Sorry, ich konnte wirklich nicht widerstehen.

Aus purer Neugier: Nutzt du das System irgendwo? Bin seit Jahren bei denen weg, ueberlege aber mir das Zeug privat nochmal anzuschauen. Aber ich bin da seit David 6 raus..

Pound for pound, plutonium is about as toxic as caffeine when eaten.