2010-06-11 26 views
1

Je souhaite joindre un fichier PDF stocké en tant qu'objet binaire dans SQL Server à un courrier électronique mais sans créer de fichier (temporaire) sur le disque.Comment joindre un fichier PDF stocké en tant qu'objet binaire dans SQL Server à un courrier électronique?

J'ai déjà la première étape pour extraire le fichier PDF du champ binaire dans SQL Server en tant que tableau byte[].

J'ai aussi l'étape de configuration du MailMessage:

MailMessage aMailMessage = new MailMessage(); 
// set address, subject, body 
aMailMessage.Attachments.Add(attachment); 

Là où je suis coincé est l'objet attachment:

Attachment attachment = new Attachment(... what goes here? ...); 

Le constructeur de Attachment accepte principalement soit un string fileName (que je don 't ont et veulent) ou un System.IO.Stream contentStream.

Donc ma question est: Avec un tableau donné byte[] est-il possible de créer l'objet Attachment sans un fichier intermédiaire sur le disque et quelles sont les étapes à suivre?

Merci d'avance!

Répondre

2

Vous pouvez convertir l'octet [] en MemoryStream et en créer une instance Attachment. Voici un exemple:

ContentType ct = new ContentType(MediaTypeNames.Application.Pdf); 
MemoryStream pdf = new MemoryStream(pdfContent); 
Attachment data = new Attachment(pdf, ct); 
+0

Super, merci! Juste une question: je viens d'utiliser le constructeur avec le 'nom' (du fichier joint), pas avec le' ContentType', puisque j'ai un message texte pur. Est-il correct que j'ai seulement besoin de spécifier le 'ContentType' si j'ai un courrier HTML? – Slauma