.NET создание электронной почты с вложениями в Office 2010 - PullRequest
1 голос
/ 04 апреля 2011

Я знаю, что с помощью ссылки mailto вы можете открыть свой почтовый клиент по умолчанию и заполнить тему и заголовок. Мне нужно сделать что-то подобное, но также приложить документ.

Все мои пользователи будут использовать Outlook 2010, и он будет установлен как почтовый клиент по умолчанию. Это нужно только для этого случая.

Как создать электронное письмо, которое открывает окно новых сообщений Outlook и заполняет поле вложения?

1 Ответ

1 голос
/ 04 апреля 2011

Вам понадобится ссылка на библиотеку COM COM Outlook, тогда что-то вроде этого должно работать:

    /// <summary>
    /// Get Application Object
    /// </summary>
    public static OL.Application Application
    {
        get
        {
            try
            {
                return Marshal.GetActiveObject("Outlook.Application") as OL.Application;
            }
            catch (COMException)
            {
                return new OL.Application();
            }
        }
    }

    /// <summary>
    /// Prepare An Email In Outlook
    /// </summary>
    /// <param name="ToAddress"></param>
    /// <param name="Subject"></param>
    /// <param name="Body"></param>
    /// <param name="Attachment"></param>
    public static void CreateEmail(string ToAddress, string Subject, string Body, string AttachmentFileName)
    {
        //Create an instance of Outlook (or use existing instance if it already exists
        var olApp = Application;

        // Create a mail item
        var olMail = olApp.CreateItem(OL.OlItemType.olMailItem) as OL.MailItem;
        olMail.Subject = Subject;
        olMail.To = ToAddress;

        // Set Body
        olMail.Body = Body;

        // Add Attachment
        string name = System.IO.Path.GetFileName(AttachmentFileName);
        olMail.Attachments.Add(AttachmentFileName, OL.OlAttachmentType.olByValue, 1, name);

        // Display Mail Window
        olMail.Display();
    }

Для того, чтобы это работало, вам также потребуется:

using System.Runtime.InteropServices;
using OL = Microsoft.Office.Interop.Outlook;
...