Добавление вложения к электронной почте .NET - PullRequest
9 голосов
/ 03 апреля 2010

Как мне прикрепить файл с очень недружественным именем (например, файл с идентификатором сеанса в нем), но прикрепить его как другое имя?

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

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

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

1 Ответ

20 голосов
/ 03 апреля 2010

Да - вы можете делать то, что пытаетесь сделать, используя другой конструктор 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 слабый, так что там могут быть некоторые глупые ошибки, но, надеюсь, мой смысл ясен, и это определенно подходящие классы / методы для использования.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...