2010-04-03 8 views
9

Как подключить файл с очень недружественным именем (например, файл с идентификационным номером сеанса в нем), но привязать его как другое имя?Добавление вложения в .NET. Email

В названии файла есть идентификатор сеанса, чтобы избежать имени столкновений на веб-сервере, но когда я прикрепляю его к файлу, предпочтительным является более дружелюбное имя.

Есть ли способ прикреплять файл с недружественным именем в качестве другого имени, чтобы при получении пользователем электронной почты он мог указать от имени, что такое содержимое файла? Мне бы очень хотелось создать уникальную папку, чтобы поместить в нее уникальное имя файла, чтобы просто привязать ее к электронному письму.

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

ответ

19

Да, вы можете делать то, что вы пытаетесь сделать, используя другой конструктор для Attachment(). К сожалению, нет ни одного, кто принимает имя файла и отдельное имя, но есть тот, который принимает Stream и отдельное имя. И есть вспомогательные методы на System.IO.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. 

(Мой синтаксис VB слаб, так что могут быть некоторые глупые ошибки там, но, надеюсь, мой смысл ясен, и те, которые, безусловно, правильные классы/методы для использования.)

+0

Браво! Работал как шарм. Большое спасибо. – ChadD

Смежные вопросы