2011-11-18 63 views
1

,所以我有很多的研究这个话题。 有一个COM的做法,我花了很多时间来实现它,它涉及即时聊天,IConverterSession,一些反思,这样的事情。我发现的大多数答案都表明这不能在C#中使用,但对我来说似乎有一种方法。 无论如何,我得到的关闭是接收一个空的IStream对象(长度= 0)。 另一件事,让我真的决定完全放弃这种方法是有些报告可能无法在64位版本的Outlook 2010下工作。MIME消息出来的MailItem

更明显的方法是简单地从Outlook中获取MailItem并开始构建MIME消息不在其中。这一个看起来非常单调乏味,容易出错+它还会通过解析/构建MIME功能来扩充我的代码。

我就在想,如果有另一种方式,某种程度上leaverage以easilly把我的Outlook邮件项目到MIME信息现有的.NET类。我买了MailMessage/SmtpClient类可能会有所斩获。所以我这样做:

 SmtpClient client = new SmtpClient(); 
     client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; 

从那时起,我可以得到的消息(我指定一个新的投递目录中的每个消息,因为我不能有自己的名字)。

因此,在深入研究反思以了解是否可以在不实际保存文件的情况下获取内容之前,是否还有其他任何内置的.Net构建方式来构建MIME消息,从单独的字段(from,to,subject,身体,附件),我不坚持一种方法,将MailItem变成MIME消息从我身边(虽然它会很好,如果有的话),但至少能够设置一些对象的属性,并得到构造之后的消息呢?

非常感谢!

+0

几年前,我使用VSTO虽然我不想要求今天,它可能只是帮助这仍然是有关曾与http://www.dimastr.com/redemption运气。 Upvoted,因为我也会对你找到的解决方案非常感兴趣。 –

+0

谢谢,史蒂夫! 现在(除非有人提出了一个真正的好的解决方案),我将使用SmtpClient来完成肮脏的工作,然后我使用代码项目文章作为基础来诱骗SmtpClient给我消息的实际内容,而没有需要将其保存到磁盘。这是有点棘手,但它的工作。 –

回答

0

好了,这里是我如何解决它: 首先我使用的是MAILMESSAGE类,从邮件项目的数据填充它,像这样:

MailMessage msgMIME = new MailMessage(); 
msgMIME.Subject = mailItem.Subject; // mailItem is the Outlook Message. 
// The rest of the logic here, setting from, to, bcc, cc, importance, body. 

然后我用一些代码项目中的本文代码: Adding Save() functionality to Microsoft.Net.Mail.MailMessage

除了我用MemoryStream替换了FileStream。 似乎很好。