2010-06-10 16 views
1

J'utilise la méthode suivante pour créer une pièce jointe d'un MemoryStream:.NET: Problème de création de pièce jointe à partir MemoryStream

public void AddAttachment(Stream stream, string filename, string mimeType) 
{ 
    byte[] buffer = ((MemoryStream) stream).GetBuffer(); 
    Attachment attachment = new Attachment(stream, filename, mimeType); 
    _mail.Attachments.Add(attachment); 
} 

Notez que la première ligne n'est pas nécessaire est pas nécessaire pour la fonctionnalité de fixation , il est juste utile d'avoir le byte [] à portée de main pendant le débogage pour que je puisse voir à quel point c'est important. (Il a généralement environ 80 000 éléments.)

Le code fonctionne bien et l'e-mail est envoyé. Lorsque Outlook reçoit l'e-mail, dans la boîte de réception, il affiche le symbole de la pièce jointe, mais lorsque vous entrez dans l'e-mail, la pièce jointe n'est pas présente.

Malheureusement, je n'ai pas accès au serveur de messagerie pour en savoir plus sur l'e-mail, par exemple. à quoi ressemble la pièce jointe, sa taille, etc.

Quelqu'un peut-il suggérer quelles propriétés de l'argument MemoryStream pourraient me dire s'il est en quelque sorte invalide pour la pièce jointe? Ou pensez à autre chose que je pourrais essayer?

Merci.

David

+0

Mais les pièces jointes à la fin sont des fichiers. Pourquoi ne pas créer des fichiers faux/fictifs au lieu d'utiliser MemoryStream? – Marcote

+0

Parce que je veux utiliser un MemoryStream. – David

+0

C'est le code exact que j'ai, mais comme le dit David M dans sa réponse, je fais d'abord 'stream.Position = 0' et ça marche pour moi. –

Répondre

2

Avez-vous réinitialiser la position du flux de mémoire à 0 après avoir écrit votre contenu à elle?

+0

C'est tout! C'est ce que c'était! Merci beaucoup. – David

+0

Pas de problème. Je suis content que ce soit aussi simple. –

+0

Horaire de concert intéressant en passant. Où est le thème New World Symphony ou Star Wars? ;) – David