Frage

Zur Zeit des folgenden Methode, die ich bin mit dem Benutzer Outlook E-Mail-Konto zu eröffnen und eine E-Mail mit dem entsprechenden Inhalt für das Senden füllen:

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

Ich mag jedoch zu der Lage sein, die E-Mail mit einer angehängten Datei zu füllen.

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 gilt jedoch nicht zu funktionieren scheint. Kennt jemand eine Weise, die diese an die Arbeit erlaubt!?

Hilfe sehr zu schätzen wissen.

Viele Grüße.

War es hilfreich?

Lösung

mailto: nicht offiziell Anlagen unterstützen. Ich habe gehört, Outlook 2003 wird mit dieser Syntax arbeiten:

<a href='mailto:name@domain.com?Subject=SubjTxt&Body=Bod_Txt&Attachment=""C:\file.txt"" '>

Eine bessere Möglichkeit, dies zu umgehen ist es, die E-Mails 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(
           "jane@contoso.com",
           "ben@contoso.com",
           "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();
    }

Andere Tipps

Wenn Sie die Standard-Mail-Client zugreifen möchten, dann können Sie MAPI32.dll (Arbeiten unter Windows OS) verwenden. Werfen Sie einen Blick auf die folgenden Wrapper:

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

sieht der Code wie folgt:

MAPI mapi = new MAPI();
mapi.AddAttachment("c:\\temp\\file1.txt");
mapi.AddAttachment("c:\\temp\\file2.txt");
mapi.AddRecipientTo("person1@somewhere.com");
mapi.AddRecipientTo("person2@somewhere.com");
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");

Enthält diese App wirklich braucht, Outlook zu verwenden? Gibt es einen Grund für die nicht die System.Net.Mail Namespace?

Wenn Sie wirklich brauchen Outlook zu verwenden (und ich würde es nicht empfehlen, denn dann sind Sie Ihre App auf 3rd-Party-Abhängigkeiten zu stützen, die wahrscheinlich zu ändern sind) werden Sie in die Microsoft.Office aussehen müssen Namespaces

Ich würde hier beginnen: http://msdn.microsoft.com/en- us / library / microsoft.office.interop.outlook.aspx

Versuchen Sie diese

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}\"", "someone@somewhere.com", @"c:\attachments\file.txt");
proc.Start();

Offiziell ja das mailTo Protokoll nicht die Anhänge unterstützen. Aber Williwyg erklärte es hier sehr gut, dass es einen Weg gibt, das zu tun - öffnen Standard-Mail-Client zusammen mit einem Befestigungs

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top