将附件添加到.NET电子邮件

时间:2010-04-03 03:21:01

标签: .net asp.net vb.net smtp email

如何附加一个非常不友好的名称的文件(如其中包含会话ID号的文件),但是将其作为另一个名称附加?

有问题的文件名中包含会话ID,以避免Web服务器上的冲突名称,但是当我将其附加到文件时,更喜欢更友好的名称。

有没有办法用不友好的名字作为另一个名字附加文件,这样当用户收到电子邮件时,他可以从名称中知道该文件的内容是什么?我不想创建一个独特的文件夹,只是为了将一个非唯一的文件名放在其中,只需将其附加到电子邮件中即可。

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 个答案:

答案 0 :(得分:20)

是的 - 你可以通过使用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语法很弱,所以可能会有一些愚蠢的错误,但希望我的意思很明确,那些肯定是正确的类/方法。)