Добавить XtraReport в качестве вложения в outlook - PullRequest
1 голос
/ 19 октября 2019

Это мой код:

   using (RepMissingStatusProject report = new RepMissingStatusProject())
        {
            report.DataSource = await inventory.RepMissingStatusProject(Convert.ToInt32(oListProject.cmbProject.EditValue)).ConfigureAwait(true);
            report.CreateDocument();

            Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
            Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

            MemoryStream mem = new MemoryStream();
            report.ExportToPdf(mem);
            mem.Seek(0, System.IO.SeekOrigin.Begin);

            oMsg.To = "Test@Test.com";
            oMsg.Subject = "Test";
            oMsg.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
            oMsg.Display(false); 
            oMsg.HTMLBody = "Veuillez trouver ci-joint:" + "<br />" + oMsg.HTMLBody;
            oMsg.Attachments.Add(mem, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, Type.Missing, Type.Missing);
        }

нормально открыт внешний вид и все данные верны, кроме файла вложения. Я получаю эту ошибку:

System.Runtime.InteropServices.COMException: 'Участник не найден. (Исключение HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) '

Как мне решить эту проблему?.
Заранее спасибо за вашу помощь

Обновление:
Я пытаюсьиспользовать этот код

System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Application.Pdf);
System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(mem,ct);
attach.ContentDisposition.FileName = "État De Manque.pdf";

но я получаю еще одну ошибку

System.ArgumentException HResult = 0x80070057 Сообщение = Извините, что-то пошло не так. Вы можете попробовать еще раз. StackTrace "в Microsoft.Office.Interop.Outlook.Attachments.Add (Источник объекта, Тип объекта, Положение объекта, Имя отображаемого объекта) \ r \ n в Smart_Industrial_Management.PL.FrmInventory.d__44.MoveNext () в D: \ SIM Windows7 \Интеллектуальное управление промышленностью \ PL \ FrmInventory.cs: строка 859 "строка

1 Ответ

1 голос
/ 21 октября 2019

oMsg.Attachments.Add(mem

первым аргументом должен быть путь к файлу в вашей файловой системе. поэтому вам нужно экспортировать pdf в файл (со случайно сгенерированным именем) и поместить путь в вызов метода oMsg.Attachments.Add () в качестве первого аргумента.

, поэтому ваш код должен быть lilke

report.ExportToPdf(randomName);
...
oMsg.Attachments.Add(randomName,...);
File.Delete(randomName);
...