2017-11-08 3 views
0

지원하는 응용 프로그램이 있습니다. 데이터베이스 (이미지 데이터 유형)에서 이미지를 검색 한 다음이 이미지를 전자 메일에 첨부 할 수 있는지 궁금합니다. 응용 프로그램은 현재 전자 메일에 이미지를 포함하지만 대신 이미지를 첨부해야합니다.VB.Net - 데이터베이스 열에서 이미지 검색 후 전자 메일에 첨부 파일로 첨부하십시오.

전자 메일에 첨부 파일을 추가하는 방법을 설명했지만 데이터베이스 필드가 아닌 파일 위치에서 이미지를 가져 왔습니다. 나는 내 필요에 부합하는 것을 찾아 오지 않았다.

어떻게 든 로컬로 이미지를 저장 한 다음 저장된 이미지를 사용하여 이메일을 보내야합니까?

SQL 서버 2014

전 기존 가져 오기 이미지 기능

 Private Function GetImage() As Byte() 
      Dim rdrImage As SqlDataReader 
      Dim strSQL As String 
      Dim arrContent As Byte() 
      strSQL = "SELECT Photo FROM " & CommonThings1.GetDatabaseSuffix & "Images " 
      strSQL = strSQL & "WHERE PhotoID = " & Request("ZQ") & " AND Random = " & Request("WXP") 
      cmCM.CommandText = strSQL 
      rdrImage = cmCM.ExecuteReader 
      rdrImage.Read() 
      arrContent = CType(rdrImage("Photo"), Byte()) 
      rdrImage.Close() 
      Return arrContent 
     End Function 

도움이 크게 감사합니다.

+0

... 내 머리 때문에 테스트하지의 상단 떨어져이 글을 쓰는, 이런 일을 가야하나요? ** 시작하려면 몇 가지 코드 **를 표시 할 수 있습니까? –

+1

MailMessage 클래스에 대한 MSDN 설명서에는 첨부 파일 추가를 포함하는 코드 예제가 포함되어 있습니다. C#에서는 사용할 수 있지만 VB에서는 사용할 수 없지만 진행 상황을 확인하는 것은 매우 쉽습니다. 이 예제에서는 파일 경로를 인자로 갖는'String'을 취하는'Attachment' 생성자를 사용합니다. 대신에'Stream'을 사용하는 것을 사용할 수 있습니다. [Click here] (http://www.vbforums.com/showthread.php?469562-Saving-Images-in-Databases) 데이터베이스에서 이미지 데이터를 포함하는'MemoryStream'을 얻는 방법의 예제를 보도록하겠습니다. – jmcilhinney

+0

@marc_s 업데이트 된 질문보기. 감사합니다 –

답변

1

당신이 사용하는 어떤 데이터베이스

Dim stream as new MemoryStream(GetImage()) 
stream.Position = 0 'If I remember correctly, need to be at beginning of stream to read from first position when attaching 
Dim MSG As New MailMessage 
Dim ToAddress = New MailAddress(SomeEmailAddress) 
Dim FromAddress As New MailAddress("[email protected]") 
Try 
    With MSG 
     .To.Add(ToAddress) 
     .From = FromAddress 
     .Subject = "Your Photo" 
     .IsBodyHtml = True 
     .Body = SomeHTML 
     .Attachments.Add(New Attachment(stream , "Photo.jpg", "application/jpg")) 
    End With 
Dim SendMessage As New SmtpClient("smtp.MyMailServer.com") 
SendMessage.Send(MSG) 
+0

이것은 효과가 있습니다! 이제 레코드 당 여러 개의 이미지가있을 수 있습니다. 각 이미지에 대해이 작업을 수행해야합니다. 도와 줘서 고마워. –

관련 문제