如何获得EmailMessage的附件?

时间:2011-03-23 12:28:26

标签: c# asp.net email exchange-server

我尝试获取您可以在EmailMessage的附件中找到的图像。但是当我运行代码时,我收到了这个错误:对象引用没有设置为对象的实例。

这是代码:

string sHTMLCOntent = item.Body;

FileAttachment[] attachments = null;

if (item.Attachments.Count != 0)
{
    attachments = new FileAttachment[item.Attachments.Count];
    for (int i = 0; i < item.Attachments.Count; i++)
    {
        string sType = item.Attachments[i].ContentType.ToLower();
        if (sType.Contains("image"))
        {
            attachments[i] = (FileAttachment)item.Attachments[i];
            string sID = attachments[i].ContentId;
            sType = sType.Replace("image/", "");
            string sFilename = sID + "." + sType;
            string sPathPlusFilename = Directory.GetCurrentDirectory() + "\\" + sFilename;
            attachments[i].Load(sFilename);
            string oldString = "cid:" + sID;
            sHTMLCOntent = sHTMLCOntent.Replace(oldString, sPathPlusFilename);
        }
    }
}
//string s = System.Text.Encoding.UTF8.GetString(item.MimeContent.Content);
//FreeTextBox1.Text += s;

2 个答案:

答案 0 :(得分:0)

因为你正在爆炸

string sType = item.Attachments[i].ContentType.ToLower();

并且您已经检查了附件的长度,然后不能设置Attachment对象的内容类型。由于您使用它来执行其余代码,因此您需要这样的代码。这条消息是如何生成的?

我会添加一些代码来查看附件,可能是AttachmentType或FileName属性,以确保您具有附件详细信息,并确定操作过程。也许您自己添加附件,只需要设置内容类型。祝你好运!

答案 1 :(得分:-2)

而不是

FileAttachment[] attachments = null;

你应该做一个它的实例:

FileAttachment[] attachments = new FileAttachment[10];

例如