添加生成的附件到Outlook电子邮件

时间:2014-10-17 12:11:34

标签: c# asp.net-mvc-4 email outlook office-interop

我有一些工作代码可以为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);

因此,我需要将内存流作为附件添加到电子邮件中。请帮忙。非常感谢!

1 个答案:

答案 0 :(得分:0)

你做不到。 Outlook中的Attachments.Add将带有附件文件名的字符串或其他Outlook项(MailItem等)作为参数。

如果使用Redemption是一个选项,则其RDOAttachments。Add方法也会将IStream COM接口作为参数。