Электронная почта на предопределенный шаблон через Outlook C # - PullRequest
1 голос
/ 16 декабря 2011

У меня есть требование отправлять автоматические электронные письма на основе шаблона, сохраненного по пути:

HostingEnvironment.MapPath ( "~ / Content / EmailTemplate / emailTemplate.oft")

Я использую приведенный ниже код для достижения этой цели, он работает нормально без шаблона с помощью (oApp.CreateItem ()), но когда я использую oApp.CreateItemFromTemplate () вместо oApp.CreateItem () я получаю исключение.

public static void CreateMessageWithAttachment(
          string invoiceNumber, string recipient,  string messageBody)
{

    Outlook.Application oApp = new Outlook.Application();
    Outlook.Folders folder = oApp.Session.GetDefaultFolder(
                               Outlook.OlDefaultFolders.olFolderDrafts) 
                                as Outlook.Folders;
    Outlook.MailItem email = oApp.CreateItemFromTemplate(
                               HostingEnvironment.MapPath(
                                "~/Content/emailTemplate/emailTemplate.oft"), folder)
                                   as Outlook.MailItem;

    email.Recipients.Add(recipient);
    email.Subject = "Invoice # " + invoiceNumber;

    {
      string fileName = invoiceNumber.Trim();
      string filePath = HostingEnvironment.MapPath("~/Content/reports/");
      filePath = filePath + fileName + ".pdf";
      fileName += ".pdf";
      int iPosition = (int)email.Body.Length + 1;
      int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
      Outlook.Attachment oAttach = email.Attachments.Add(
                           filePath, iAttachType, iPosition, fileName);
    }

    email.Display();
    ////..uncomment below line to SendAutomatedEmail emails atomaticallly
    ////((Outlook.MailItem)email).Send(); 
}

1 Ответ

0 голосов
/ 16 декабря 2011

// использовать это как пример. Интересно, если в сетевом пути есть проблемы, которые решаются, какая ошибка // ты тоже получаешь «~ / Content / emailTemplate / emailTemplate.oft» вам также нужно получить относительный путь в сети. замените приведенный ниже пример вашими значениями и переменными.

private void CreateItemFromTemplate()
{
    Outlook.Folder folder =
        Application.Session.GetDefaultFolder(
        Outlook.OlDefaultFolders.olFolderDrafts) as Outlook.Folder;
    Outlook.MailItem mail =
        Application.CreateItemFromTemplate(
        @""~/Content/emailTemplate/emailTemplate.oft", folder) as Outlook.MailItem;
    mail.Subject = "Congratulations";
    mail.Save();
}
...