我有一些工作代码可以为Outlook添加附件。但是我们必须在添加附件时指定文件的物理位置。在我的场景中,我将数据表导出到word文档,需要将该文档附加到电子邮件,而不将文档保存在文件夹中。代码如下..
Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook._MailItem oMailItem = (Microsoft.Office.Interop.Outlook._MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
oMailItem.To = "test@gmail.com";
oMailItem.Subject = "Outlook Email test Subject";
StringWriter strwritter = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(strwritter);
GridView gv = new GridView();
DataTable dtWord = GetDataItem();
gv.DataSource = dtWord;
gv.DataBind();
gv.RenderControl(htmlWrite);
MemoryStream ms = null;
StreamWriter sw = new StreamWriter(ms);
sw.WriteLine(sb.ToString());
sw.Flush();
ms.Seek(0, SeekOrigin.Begin);
string fileName = @"D:\test.doc";
oMailItem.Attachments.Add(fileName, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, Type.Missing, Type.Missing);
oMailItem.Display(true);
因此,我需要将内存流作为附件添加到电子邮件中。请帮忙。非常感谢!
答案 0 :(得分:0)
你做不到。 Outlook中的Attachments.Add将带有附件文件名的字符串或其他Outlook项(MailItem等)作为参数。
如果使用Redemption是一个选项,则其RDOAttachments。Add方法也会将IStream COM接口作为参数。