发送电子邮件附件会增加.net中的附件文件大小

时间:2009-12-22 10:22:59

标签: .net vb.net email memorystream

我目前正在处理一段需要发送附件的代码 发电子邮件生成。附件是PDF文档。由于我的要求 无法保存PDF并发送它,所以我不得不创建一个内存流附件。

我遇到的问题是文件大小为_500KB。但是将文件保存在我的 机器,大概是370KB。

文件大小的增加是不可接受的。以前有人遇到过这个问题吗? 如果是这样,他们如何解决问题。

以下是代码部分。 “

Dim memStream As System.IO.MemoryStream = Nothing
'assign number to the PDF name
Dim filename As String = req.GetAccountNumber()
'add file extension
filename &= ".pdf"

'initialise the memory stream
memStream = New System.IO.MemoryStream()

'generate the pdf and put it in a byte array
Dim arrBytData() As Byte = CType(PDFRequest(),Byte()))

'flush the stream
memStream.Flush()

'Create new instances of the message and attachments
'and intialise them
Dim msg As New System.Net.Mail.MailMessage(req.EmailFrom, req.EmailTo)
Dim att As New System.Net.Mail.Attachment(memStream, filename)

With msg
     .Attachments.Add(att)
     .Body = req.EmailBody
     .Subject = req.EmailSubject
End With

'connect to the server and send the message
Dim client As New System.Net.Mail.SmtpClient()
client.Host = PDFService(Of T).mSMTPServer
client.Send(msg)

'Close our stream
memStream.Close()
msg = Nothing

2 个答案:

答案 0 :(得分:4)

问题是附件必须使用Base64进行编码 - 原始二进制数据不会在电子邮件中“存活”,因此必须将其编码为仅使用某些“安全”字符的表单。这增加了大小 - 原始二进制文件有256个“字符”,而Base64编码只有64个。没有任何解决方法。

答案 1 :(得分:2)

增加可能是由于二进制数据附加到电子邮件时的base64编码。 AFAIK你无能为力。