2009-07-23 8 views
0

Nous stockons des informations d'e-mail planifiées dans SQL Server 2005. Les informations d'e-mail incluent 0 - 3 pièces jointes de variant le type de fichier. J'ai un service Windows VB.net qui exécute un nombre x de minutes, remplit un jeu de données avec les informations de courrier électronique de SQL Server, construit les emails et les envoie via ASPNet EMail.ASPNet EMail pièce jointe à partir de SQL BLOB

Si vous tentez de créer et d'ajouter une pièce jointe à partir d'un BLOB, la méthode d'envoi du courrier électronique expire, même si la pièce jointe n'est qu'un fichier texte de 15 octets. Hardcoding le chemin directement au fichier fonctionne bien. J'ai essayé plusieurs méthodes et je n'arrive pas à le faire correctement.

+0

Veuillez poster votre code. – RedFilter

Répondre

0

Hmm, j'ai fait une chose similaire. Pour chacune de mes pièces jointes, je stocke les données sous la forme d'une colonne binaire et d'une colonne séparée contenant la taille du fichier en octets. Pour obtenir de la base de données que j'ai écrit quelque chose comme (classes usingSqlCommand et SqlDataReader):

attachment = new byte[size]; 

sqlReader.GetBytes(sqlReader.GetOrdinal("attachment"), 0, attachment, 0, size); 

System.IO.MemoryStream s = new System.IO.MemoryStream(attachment, true); 
s.Write(attachment, 0, attachment.Length); 

Et trop attaché à une classe MailMessage (mm) pour court;

System.IO.MemoryStream s = new System.IO.MemoryStream(attachment, false); 

Attachment attached = new Attachment(s, "some file name"); 
mm.Attachments.Add(attached); 

Peut-être que ces extraits aideront! J'ai extrait le code de deux classes personnalisées différentes, donc c'est un peu maladroit avec l'objet MemoryStream dans chaque extrait.

Questions connexes