Как получить вложение EmailMessage? - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь получить изображения, которые вы можете найти в приложении к сообщению электронной почты.Но когда я запускаю код, я получаю эту ошибку: Ссылка на объект не установлена ​​на экземпляр объекта.

Это код:

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 голосов
/ 23 марта 2011

Так как вы взрываетесь на

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

и вы уже проверили длину вложений, поэтому тип содержимого объекта Attachment не должен быть установлен. Поскольку вы используете это для выполнения остальной части своего кода, похоже, что это требуется для вас. Как генерируется это сообщение?

Я бы добавил немного кода, чтобы взглянуть на вложение, может быть, свойство AttachmentType или FileName, чтобы убедиться, что у вас есть данные вложения, и определить порядок действий. Может быть, вы добавляете вложение самостоятельно и вам просто нужно установить тип контента. Удачи!

0 голосов
/ 23 марта 2011

вместо

FileAttachment[] attachments = null;

Вы должны сделать экземпляр этого:

FileAttachment[] attachments = new FileAttachment[10];

например

...