2010-04-03 9 views
9

Come si allega un file con un nome molto ostile (ad esempio un file con un numero di ID di sessione) ma è allegato come un altro nome?Aggiunta di un allegato a un e-mail .NET

Il nome file in questione ha l'ID di sessione al suo interno per evitare il nome delle collisioni sul server Web, ma quando lo allego al file, è preferibile un nome più amichevole.

C'è un modo per allegare il file con il nome ostile come un altro nome in modo che quando l'utente riceve l'e-mail può dire dal nome qual è il contenuto del file? Odio dover creare una cartella univoca solo per mettere un nome di file non univoco al suo interno allo scopo di semplicemente allegarlo a una e-mail.

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

risposta

19

Sì, puoi fare ciò che stai cercando di fare utilizzando un diverso costruttore per Attachment(). Purtroppo non ce n'è uno che prende un nome di file e un nome separato, ma ce n'è uno che prende uno Stream e un nome separato. E ci sono metodi di supporto su System.IO.File che rendono facile ottenere un flusso di file da un nome di file.

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. 

(la mia sintassi VB è debole, quindi non ci possono essere alcuni errori stupidi in là, ma si spera che il mio significato è chiaro, e quelli sono sicuramente il classi destra/metodi da utilizzare.)

+0

Bravo! Ha funzionato come un fascino. Grazie mille. – ChadD