سؤال

أحاول تشغيل الكود أدناه لكتابة عنصر عبارة عن مرفق بريد إلكتروني بملف موجود على القرص ولكنه يعطي خطأ لأنه لم يتم تحميل الخاصية.

using (Stream FileToDisk = new FileStream(emailAttachmentsPath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    itemAttachment.Load(
    byte[] ContentBytes = System.Convert.FromBase64String(itemAttachment.ContentType);

    FileToDisk.Write(ContentBytes, 0,ContentBytes.Length);
    FileToDisk.Flush();
    FileToDisk.Close();
} 

لقد جربت هذا لكنه لن يتم تجميعه:

email.Load(new PropertySet(ItemSchema.MimeContent));

كيف يمكنني الحصول على نوع محتوى العنصر حتى أتمكن من إنشاء ملفي ContentBytes هدف؟

هل كانت مفيدة؟

المحلول

في النهاية فعلت هذا (كنت بحاجة في الأساس إلى تحميل محتوى Mimi الخاص بملف ietem المرفق، بالإضافة إلى بعض الخصائص الإضافية:

itemAttachment.Load(new PropertySet(BasePropertySet.FirstClassProperties));

itemAttachment.Load(new PropertySet(
        BasePropertySet.IdOnly,
        ItemSchema.Subject,
        ItemSchema.DateTimeReceived,
        ItemSchema.DisplayTo, 
        EmailMessageSchema.From, EmailMessageSchema.Sender,
        EmailMessageSchema.HasAttachments, ItemSchema.MimeContent,
        EmailMessageSchema.Body, EmailMessageSchema.Sender,
        ItemSchema.Body) { RequestedBodyType = BodyType.Text });

string BodyText = itemAttachment.Item.Body.Text;

string itemAttachmentName = itemAttachment.Name.Replace(":", "");

// Put attachment contents into a stream. 
emailAttachmentsPath = emailAttachmentsPath + "\\" + itemAttachmentName +  ".eml";
var mimeContent = itemAttachment.Item.MimeContent;

//save to disk 
using (var fileStream = new FileStream(emailAttachmentsPath, FileMode.Create))
{
    fileStream.Write(mimeContent.Content, 0, mimeContent.Content.Length);
}

خيار اخر:

var mimeContent2 = itemAttachment.Item.MimeContent;
byte[] ContentBytes = mimeContent2.Content;

//convert array of bytes into file
FileStream objfileStream = new FileStream("C:\\email2case\\temp\\testing" + System.DateTime.Now.ToString("HHmmss") + ".eml", FileMode.Create);
objfileStream.Write(ContentBytes, 0, ContentBytes.Length);
objfileStream.Close();

آمل أن يساعد هذا شخص ما!

نصائح أخرى

itemAttachment.Load(new PropertySet(EmailMessageSchema.MimeContent));
var mimeContent2 = itemAttachment.Item.MimeContent;
fileBytes = mimeContent2.Content;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top