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
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
Parce que je veux utiliser un MemoryStream. – David
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. –