2017-04-25 9 views
2

私はWebサーバーを移行し、いくつかのアプリケーション(vb.net環境)を書き直しています。そうすることで、私はジレンマに出くわし、何か助けに感謝します。データベースから.pdfを取得し、それをファイル構造に書き込まずに添付ファイルとして電子メールに挿入するには

私は成功したデータベースのうち、.pdfファイルを引っ張って、それを表示することができます。

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 

を、私は正常にファイルを添付してメールを送信することができます:私はするために必要なもの

CodeMod.sendMail(strTo, strFrom, "Test Email", "Test Content",, Server.MapPath("/Test/TEST.pdf")) 

--------------------------------- 
Public Sub sendMail(strTo As String, strFrom As String, strSubject As String, strMsg As String, Optional ByVal strCc As String = "", Optional ByVal file As String = "") 

Dim oMMsg As New Net.Mail.MailMessage() 
oMMsg.From = New MailAddress(strFrom) 
oMMsg.To.Add(strTo) 
oMMsg.Subject = strSubject 
oMMsg.Body = strMsg 
oMMsg.IsBodyHtml = True 

If file <> "" Then oMMsg.Attachments.Add(New Attachment(file)) 

Dim client As New SmtpClient() 
client.Host = "correct.information" 
client.Port = 25 
client.Send(oMMsg) 

End Sub 

をこれらの2つの能力と結婚することです。私はデータベースから.pdfを取得し、それを電子メールの添付ファイルとして送信する必要があります...

...これまでファイルをファイル構造に書き込むことはありません。

+0

フォロー[C#ではMailMessageへのMemoryStreamからファイルを添付](http://stackoverflow.com/q/5336239/205233)から接続する方法上の既存の個別の質問がありますが、ストリームを "0"に戻すことを忘れないでください。 – Filburt

答えて

0

私が正しいとすれば、そのPDFをメモリストリームに書き込んで、メモリストリームから直接添付することができます。メモリストリーム

Attach a file from MemoryStream to a MailMessage in C#

+0

C#からVB.Netに変換するのに少し時間がかかりましたが、最終的にこれが正しい方向に向いています。ありがとうございました。 –

関連する問題