Прикрепление электронной почты в качестве приложения к другому электронному письму

99
12

Я хотел бы знать, как прикрепить электронное письмо в качестве приложения к другому письму на С#.
Подробности:


    Я пишу плагин для Outlook
    Я получаю сообщение об ошибке в этой строке: Attachment attach = new Attachment (mailItem, новый System.Net.Mime.ContentType( "text/html; charset = us-ascii" ));
    Сообщение об ошибке: не удается создать экземпляр абстрактного класса или интерфейса "Microsoft.Office.Interop.Outlook.Attachment"

    Пример кода ниже


    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
    Explorer explorer = Globals.ThisAddIn.Application.ActiveExplorer();
    Selection selection = explorer.Selection;

    if (selection.Count > 0) // Check that selection is not empty.
    {
    object selectedItem = selection[1]; // Index is one-based.
    MailItem mailItem = selectedItem as MailItem;

    if (mailItem != null) // Check that selected item is a message.
    {
    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
    message.To.Add("blah@blah.com");
    message.Subject = "blah";
    message.From = new System.Net.Mail.MailAddress("test@test.com");
    message.Body = "This is the message body";

    Attachment attach = new Attachment(mailItem, new System.Net.Mime.ContentType("text/html; charset=us-ascii"));
    message.Attachments.Add(attach);
    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smlsmtp");
    smtp.Send(message);

    }
    }
    }


спросил(а) 2021-01-25T10:58:43+03:00 5 месяцев назад
1
Решение
89

После немного большего чтения/поиска я смог найти что-то, что работает. Вероятно, самая сложная часть - первая строка.


                try
{
Outlook.MailItem tosend = (Outlook.MailItem)Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olMailItem);
tosend.Attachments.Add(mailItem);
tosend.To = "blah@blah.com";
tosend.Subject = "test";
tosend.Body = "blah";
tosend.Save();
tosend.Send();
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught: ", ex);
}

Спасибо @Kris Vandermotten за то, что указали мне в правильном направлении

ответил(а) 2021-01-25T10:58:43+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема