簡體   English   中英

在 outlook 中添加 XtraReport 作為附件

[英]Add XtraReport as attachment in outlook

這是我的代碼:

   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);
        }

outlook 打開正常,所有數據都正確,除了附件文件我收到此錯誤:

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 Message=抱歉,出了點問題。 您可能想再試一次。 StackTrace "at Microsoft.Office.Interop.Outlook.Attachments.Add(Object Source, Object Type, Object Position, Object DisplayName)\r\n at Smart_Industrial_Management.PL.FrmInventory.d__44.MoveNext() in D:\SIM Windows7\智能工業管理\PL\FrmInventory.cs:line 859" 字符串

oMsg.Attachments.Add(mem

第一個參數應該是文件系統上文件的路徑。 因此您需要將 pdf 導出到文件(具有隨機生成的名稱)並將路徑作為第一個參數放入 oMsg.Attachments.Add() 方法調用中。

所以你的代碼應該是 lilke

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM