2010-04-03 17 views
9

¿Cómo adjunto un archivo con un nombre poco amigable (como un archivo con un número de identificación de sesión) pero lo adjunto como otro nombre?Agregar un archivo adjunto a .NET Email

El nombre del archivo en cuestión tiene la ID de la sesión para evitar el nombre de los conflictos en el servidor web, pero cuando lo adjunto al archivo, es preferible un nombre más amigable.

¿Hay alguna manera de adjuntar el archivo con el nombre poco amistoso como otro nombre para que cuando el usuario recibe el correo electrónico pueda decir por el nombre cuál es el contenido del archivo? No me gustaría tener que crear una carpeta única solo para poner un nombre de archivo no único en él con el único propósito de adjuntarlo a un correo electrónico.

Dim mailMessage As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage() 
mailMessage.Attachments.Add("C:\My\Code\BESI\BESI\Files\Invoice-djopyynrgek4p4qadn31dxxs.pdf", ????) 

Respuesta

19

Sí, puedes hacer lo que estás intentando hacer usando un constructor diferente para Attachment(). Lamentablemente, no hay uno que tome un nombre de archivo y un nombre aparte, pero hay uno que toma un Stream y un nombre diferente. Y hay métodos de ayuda en System.IO.File que facilitan la obtención de una secuencia de archivos desde un nombre de archivo.

Imports System.Net.Mail 
Imports System.IO 

Dim mailMessage as MailMessage = New MailMessage() 
Dim stream as FileStream = File.OpenRead("C:\My\Code\BESI\BESI\Files\Invoice-djopyynrgek4p4qadn31dxxs.pdf") 
Dim attachment as Attachment = New Attachment(stream, "FriendlyName.pdf") 
mailMessage.Attachments.Add(attachment) 

'Be sure to Dispose stream after you've sent the mail. 

(Mi sintaxis VB es débil, lo que puede haber algunos errores tontos de allí, pero espero que mi significado es claro, y los que son sin duda las clases correctas/métodos para su uso.)

+0

Bravo! Trabajado como un encanto. Muchas gracias. – ChadD

Cuestiones relacionadas