如何从数据库中提取.pdf,然后将其作为附件插入到电子邮件中,而不将其写入文件结构

时间:2017-04-25 15:48:44

标签: sql-server vb.net pdf

我正在迁移Web服务器并重写一些应用程序(vb.net环境)。在这样做的过程中,我遇到了一个困境,非常感谢一些帮助。

我可以成功地从数据库中提取.pdf文件并显示它:

#define

我可以成功发送带有文件附件的电子邮件:

Dim iID As Integer
Dim bPDF As Byte()
iID = Convert.ToInt32(Request.QueryString("Id"))
bPDF = CodeMod.GetPdfBytes(iID)
Response.ContentType = "application/pdf"
Response.OutputStream.Write(bPDF, 0, bPDF.Length)

---------------------------------

Public Function GetPdfBytes(ByVal id As Int32) As Byte()

Dim SQLcon As New SqlClient.SqlConnection
Dim SQLcmd As New SqlClient.SqlCommand
Dim dt As New DataTable

SQLcon.ConnectionString = sConnection("pdfStore")
SQLcmd.CommandText = "[DOIMSQL,1433].[DOI_PDF_Storage].dbo.sel_pdf_id"
SQLcmd.CommandType = CommandType.StoredProcedure
SQLcmd.Parameters.Add("@pdf_id", SqlDbType.VarChar).Value = id
SQLcmd.Connection = SQLcon

SQLcon.Open()
dt.Load(SQLcmd.ExecuteReader)
SQLcon.Close()

GetPdfBytes = DirectCast(dt.Rows(0)("pdf_file"), Byte())

End Function

我需要做的就是结合这两种能力。我需要从数据库中检索.pdf并将其作为电子邮件附件发送...

...无需将文件写入文件结构。

1 个答案:

答案 0 :(得分:0)

如果我做对了,你可以将PDF写入内存流并直接从内存流中创建附件。关于如何从内存流中附加

存在一个独立的问题

Attach a file from MemoryStream to a MailMessage in C#