Hallo miteinander,
Ich suche schon den ganzen Tag nach einer guten Lösung für mein Problem.
Ich will auf bsp einen Button klicken können und das Mailprogramm (Outlook) geht auf und beinhaltet schon ein paar Grunddaten wie Absender, Empfänger Titel und einen Anhang.
Bis auf den Anhang konnte ich alles mit "mailto" lösen..
public void SendMailAttach(string emailAddress, string betreff, string text, string pfad)
{
Process.Start("mailto:" + emailAddress + "?subject=" + betreff + "&body="
+ text + "&Attach=" + pfad);
}
SendMailAttach("test@test.com", "TestBetreff",
"Hallo"
+ "%0d%0A" + "Dies ist ein Test Mail"
+ "%0d%0A"
+ "%0d%0A" + "Freundliche Grüsse"
+ "%0d%0A" + "Max Muster",
@"C:\Temp\test.txt");
Hat jemand eine Lösung für dieses Problem?
Danke und Gruss Tim
Du kannst nur das übergeben, was das Mailto-Protokoll auch bereitstellt.
Und das ist Empfänger (auch CC und BCC), Titel und Body - mehr nicht.
Mir persönlich ist aber kein anderes Protokoll bekannt, das Deine Anforderungen deckt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Genau das ist mein Problem, aber ich finde keinen passenden Ersatz welche funktioniert
Was würden Sie mir vorschlagen?
Gruss Tim
Hallo timiboy,
How to: Programmatically Attach Files to Outlook E-Mail Items
sowas?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Nicht ganz, bei diesen Beispielen wird das Mail direkt versendet.
Ich möchte dem User aber noch die Möglichkeit geben die Nachricht zu bearbeiten.
Gruss Tim
Dann pass doch einfach den Code an?! 🤔
Die Basis wird ja gezeigt.
Muss Dir halt bewusst sein, dass das ein Addin sein wird und Du das auf jedem PC in jedem Outlook installieren musst. =)
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hm, es sollte bzw, kann nicht auf Clients installiert werden.
Gibt es keine Möglichkeit das zu umgehen oder zu vereinfachen?
Du könntest alternativ ein eigenes Fenster anzeigen und dann die Mail mit den Bordmitteln von C# verschicken.
Wie gesagt; mir ist kein Protokoll bekannt, das Deine Anforderungen deckt - und ich bezweifle, dass es das gibt (ist schließlich (theoretisch) ein Sicherheitsrisiko).
Ergo wirst Du um ein Addin, das installiert werden soll, sehr sehr wahrscheinlich bei diesem gewünschten Vorhaben nicht drum herum kommen.
Selbst wenn Du ein eigenes Programm entwickelst, das diese Aufgabe für Outlook übernimmt, muss dieses installiert oder zumindest lokal ausgeführt werden.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ja das hab ich mir auch schon überlegt, wäre auf jeden Fall meine Notfall Lösung, falls ich es nicht herausfinde 😃
Hallo Tim,
Du kannst entweder einen eigenen Client schreiben der einen Anhang erlaubt,
oder Du kannst mit dem MAPI Protokoll wie folgt ein Email mit Dateianhang in Outlook erzeugen :
clsMAPI mapi = new clsMAPI();
mapi.AddRecipientTo(EmpfaengerEmail);
mapi.AddAttachment(Dateianhang);
mapi.AddAttachment(Dateianhang2);
mapi.SendMailPopup(subject, body);
Quelle : http://www.codeproject.com/Articles/17561/Programmatically-adding-attachments-to-emails-in-C
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Ich mach das mit Office Interop...Gibt doch auch .Net Office
using System;
using System.IO;
#region Using Directives
using System;
using CommandLine;
using CommandLine.Text;
#endregion
namespace app_SendMailAttach
{
class Program
{
static void Main(string[] args)
{
var options = new Options();
if (!CommandLine.Parser.Default.ParseArguments(args, options))
{
Environment.Exit(CommandLine.Parser.DefaultExitCodeFail);
}
Microsoft.Office.Interop.Outlook.NameSpace lo_NSpace;
Microsoft.Office.Interop.Outlook.MAPIFolder lo_Folder;
Microsoft.Office.Interop.Outlook.Application lo_OutApp;
Microsoft.Office.Interop.Outlook.MailItem lo_Item;
lo_OutApp = new Microsoft.Office.Interop.Outlook.Application();
lo_NSpace = lo_OutApp.GetNamespace("MAPI");
lo_Folder = lo_NSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail);
lo_Item = (Microsoft.Office.Interop.Outlook.MailItem)lo_Folder.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
if (options.files != null)
{
for (int i = 0; i < options.files.Length; i++)
{
if (!File.Exists(options.files[i])) continue;
lo_Item.Attachments.Add(options.files[i]);
}
}
lo_Item.Subject = options.subject;
lo_Item.To = options.recipient;
if (!string.IsNullOrEmpty(options.text))
{
lo_Item.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
lo_Item.HTMLBody = options.text;
}
else
{
lo_Item.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatRichText;
}
//Wenn man cc oder bcc verschicken will
//lo_Item.CC = EmailCC;
//lo_Item.BCC = EmailBCC;
//wenn man möchte kann man noch Flaggen und Fälligkeit definieren
//lo_Item.FlagStatus = Microsoft.Office.Interop.Outlook.OlFlagStatus.olFlagMarked;
//lo_Item.FlagIcon = Microsoft.Office.Interop.Outlook.OlFlagIcon.olRedFlagIcon;
//lo_Item.FlagDueBy = DateTime.Now.AddDays(7);
//lo_Item.Body = MailBody;
//NachrichtenFormat
//Anzeigen modal
lo_Item.Display();
//Senden der Mail
//lo_Item.Send();
}
}
}