it-swarm.com.de

C # MailTo mit Anhang?

Derzeit verwende ich die folgende Methode, um das Outlook-E-Mail-Konto der Benutzer zu öffnen und eine E-Mail mit dem relevanten Inhalt zum Versenden zu füllen:

public void SendSupportEmail(string emailAddress, string subject, string body)
{
   Process.Start("mailto:" + emailAddress + "?subject=" + subject + "&body=" 
                + body);
}

Ich möchte jedoch die E-Mail mit einer angehängten Datei füllen können.

so etwas wie:

public void SendSupportEmail(string emailAddress, string subject, string body)
{
   Process.Start("mailto:" + emailAddress + "?subject=" + subject + "&body=" 
      + body + "&Attach="
      + @"C:\Documents and Settings\Administrator\Desktop\stuff.txt");
}

Dies scheint jedoch nicht zu funktionieren. Weiß jemand, wie dies möglich ist !?

Hilfe sehr zu schätzen.

Grüße.

26
Goober

mailto: unterstützt Anhänge nicht offiziell. Ich habe gehört, dass Outlook 2003 mit dieser Syntax arbeitet:

<a href='mailto:[email protected]?Subject=SubjTxt&Body=Bod_Txt&Attachment=""C:\file.txt"" '>

Ein besserer Weg, um damit umzugehen, ist das Senden der Mail auf dem Server mit System.Net.Mail.Attachment .

    public static void CreateMessageWithAttachment(string server)
    {
        // Specify the file to be attached and sent.
        // This example assumes that a file named Data.xls exists in the
        // current working directory.
        string file = "data.xls";
        // Create a message and set up the recipients.
        MailMessage message = new MailMessage(
           "[email protected]",
           "[email protected]",
           "Quarterly data report.",
           "See the attached spreadsheet.");

        // Create  the file attachment for this e-mail message.
        Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
        // Add time stamp information for the file.
        ContentDisposition disposition = data.ContentDisposition;
        disposition.CreationDate = System.IO.File.GetCreationTime(file);
        disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
        disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
        // Add the file attachment to this e-mail message.
        message.Attachments.Add(data);

        //Send the message.
        SmtpClient client = new SmtpClient(server);
        // Add credentials if the SMTP server requires them.
        client.Credentials = CredentialCache.DefaultNetworkCredentials;

        try {
          client.Send(message);
        }
        catch (Exception ex) {
          Console.WriteLine("Exception caught in CreateMessageWithAttachment(): {0}", 
                ex.ToString() );              
        }
        data.Dispose();
    }
10
Jon Galloway

Wenn Sie auf den Standard-E-Mail-Client zugreifen möchten, können Sie MAPI32.dll verwenden (funktioniert nur unter Windows). __ Sehen Sie sich den folgenden Wrapper an:

http://www.codeproject.com/KB/IP/SendFileToNET.aspx

Code sieht so aus:

MAPI mapi = new MAPI();
mapi.AddAttachment("c:\\temp\\file1.txt");
mapi.AddAttachment("c:\\temp\\file2.txt");
mapi.AddRecipientTo("[email protected]");
mapi.AddRecipientTo("[email protected]");
mapi.SendMailPopup("testing", "body text");

// Or if you want try and do a direct send without displaying the mail dialog
// mapi.SendMailDirect("testing", "body text");
50
Alex

Muss diese App wirklich Outlook verwenden? Gibt es einen Grund dafür, den System.Net.Mail-Namespace nicht zu verwenden?

Wenn Sie wirklich Outlook verwenden müssen (und ich würde es nicht empfehlen, da Sie Ihre App auf Abhängigkeiten von Drittanbietern basieren, die sich wahrscheinlich ändern werden), müssen Sie die Microsoft.Office-Namespaces betrachten

Ich würde hier beginnen: http://msdn.Microsoft.com/de-de/library/Microsoft.office.interop.Outlook.aspx

4
David

Versuche dies

var proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = string.Format("\"{0}\"", Process.GetProcessesByName("Outlook")[0].Modules[0].FileName);
proc.StartInfo.Arguments = string.Format(" /c ipm.note /m {0} /a \"{1}\"", "[email protected]", @"c:\attachments\file.txt");
proc.Start();
2
kernowcode

Offiziell ja, das mailTo-Protokoll unterstützt die Anhänge nicht. Aber Williwyg hat hier sehr gut erklärt, dass es einen Weg gibt, dies zu tun - Standard-Mail-Client mit einem Anhang öffnen

0
Mahesh