使用预先存在的PDF发送电子邮件 - 收件人无法打开PDF

时间:2015-03-31 21:00:02

标签: asp.net email pdf attachment

我需要帮助通过ASP.NET发送PDF。我有一个网页屏幕,用户可以在其中输入一些信息,如果需要,还可以浏览他们的文件夹并抓取PDF以通过电子邮件发送。 PDF不是动态创建的,它已经存在于用户的机器上(通常在桌面上或在我的文档中)。

我可以使用FileUpload命令访问PDF,它附加并发送就好了。但是,当有人试图打开PDF时,他们会收到无法打开的消息,因为它不是受支持的文件类型或已损坏,并且表明它未正确解码。

我知道这不是一个不受支持的文件类型或损坏的PDF问题 - 它是解码 - 但我似乎找不到任何谈论抓取现有PDF并通过电子邮件发送它。我确定这是设置PDF或编码的标题信息的问题 - 但我找不到任何明确的示例,说明如何获取现有PDF并发送它并获取所有标题或内容类型或字节内容正确(我现在还没有解决这些问题 - 我知道我的问题存在于某个地方,但我不知道从哪里开始所以我没有处理这些事情的代码。)

我拥有的是:

Dim email As New MailMessage

......set up body and subject and sender/receiver info

If FileUpload1.HasFile Then

Dim FileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
Dim memStream As New MemoryStream(UTF32Encoding.Default.GetBytes(FileName))
memStream.Position = 0
Dim attachFile As New Attachment(memStream, FileName)
email.Attachments.Add(attachFile)
End If

我甚至不确定这是正确的开始方法,但我只是为了到达这里,在所有这一切之前它永远无法在FileUpload1中找到附件。现在我至少可以得到并发送它,但任何人都无法打开它。如果从头到尾有一个更好的方法我就是为它而战。

这是一个内部网/内部网页,使用我们的内部网络电子邮件(outlook)仅向内部收件人发送内容。

任何想法都将不胜感激

1 个答案:

答案 0 :(得分:0)

是的,看起来有太多厨师为我的原始代码做出了贡献,这使得它变得比以前更加混乱。扔出if / end if和替换为

之间的所有东西
Dim strFileName as String = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName)
Dim attachment as New Attachment(FileUpload1.PostedFile.InputStream, strFileName)
email.Attachments.Add(attachment)

照顾好一切 - 并且比所有网站看起来更简单   感谢