C # fileattachment содержимое строки - PullRequest
1 голос
/ 25 мая 2011

Я пытаюсь получить содержимое из вложения в электронное письмо.Я могу прочитать письмо и все его атрибуты.Вложение представляет собой текстовый файл (.txt).Как мне получить текстовое содержание вложения?Ниже приведен раздел моего кода, показывающий, как я получаю каждое письмо, а затем получаю его атрибуты и сохраняю их в списке findResults.Что-то вроде fileAttachment.Name даст мне имя вложения.fileAttachment.content.tostring () покажет мне только system.Byte [].

FindItemsResults<Item> findResults = service.FindItems(fid1, new ItemView(int.MaxValue));
service.LoadPropertiesForItems(from Item item in findResults select item, PropertySet.FirstClassProperties);

foreach (Item item in findResults)
{
    String body = "";
    #region attachments
    if (ReadAttachments == "1")
    {
        EmailMessage message = EmailMessage.Bind(service, item.Id, new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments));

        foreach (Attachment attachment in message.Attachments)
        {
            if (attachment is FileAttachment)
            {
                FileAttachment fileAttachment = attachment as FileAttachment;

                // Load the file attachment into memory and print out its file name.
                fileAttachment.Load();

                String attachbody = fileAttachment.Content.ToString();

                if (attachbody.Length > 8000)
                {
                    attachbody = attachbody.Substring(0, 8000);
                }
                Console.writeline(attachbody);
                #endregion

            }
        }
    }
    #endregion
}   

1 Ответ

6 голосов
/ 25 мая 2011

Это потому, что для получения массива байтов вам понадобится StreamReader

var stream = new System.IO.MemoryStream(fileAttachment.Content);
var reader = new System.IO.StreamReader(stream, UTF8Encoding.UTF8);
var text = reader.ReadToEnd();
...