Question

J'essaie d'exécuter le code ci-dessous pour écrire un élément qui est une pièce jointe à un courrier électronique dans un fichier sur le disque, mais cela génère une erreur car la propriété n'est pas chargée.

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();
} 

J'ai essayé ceci mais ça ne compile pas :

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

comment puis-je obtenir le type de contenu de l'élément afin de pouvoir créer mon ContentBytes objet?

Était-ce utile?

La solution

à la fin j'ai fait ça (en gros j'avais besoin de charger le contenu Mimi du ietem pièce jointe, ainsi que quelques propriétés supplémentaires :

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);
}

une autre option:

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();

J'espère que ça aidera quelqu'un!

Autres conseils

itemAttachment.Load(new PropertySet(EmailMessageSchema.MimeContent));
var mimeContent2 = itemAttachment.Item.MimeContent;
fileBytes = mimeContent2.Content;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top