2017-03-17 7 views
11

SQL Server에 저장된 sp_dbmail proc를 사용하여 전자 메일 본문에 포함해야하는 SSRS 보고서가 있습니다. 파일 첨부시 "텍스트로 삽입"옵션을 사용하여 SSRS 보고서의 .mhtml 내보내기를 첨부하여 Outlook의 프런트 엔드를 사용하여이 작업을 수행 할 수 있습니다.sp_send_dbmail 본문에 mhtml 파일 포함

sp_dbmail sproc을 사용하여이 작업을 수행 할 수있는 방법이 있습니까?

내가 사용 SQL 서버 2014 표준

답변

6

네,이 sp_send_dbmail에 걸쳐 통과 한 후, 변수로 파일의 내용을 읽어 가능하다. 여기 당신이 그것을 할 수있는 방법은 다음과 같습니다

declare @htmlBody varchar(max) 

SELECT @htmlBody=BulkColumn 
FROM OPENROWSET(BULK N'c:\test\test.html',SINGLE_BLOB) x; 



EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = N'Email', -- you should use the profile name of yours, whatever is set up in your system. 
    @recipients = 'recipient_email_id', 
    @subject = 'Test', 
    @body = @htmlBody, 
    @body_format = 'html', 
    @from_address = 'sender_email_id'; 

이 이메일의 몸에 c:\test\test.html의 내용을 포함합니다. 물론 몸에 더 추가 할 수 있습니다.

UPDATE :

이것은 당신이 읽고있는 파일이 HTML 내용이 포함 된 경우에만 작동합니다. mhtml에서 작동하게하려면 mhtml 파일을 html으로 변환해야합니다 (mhtmlhtml으로 변환하는 방법에 대한 자세한 내용은 @Pops의 답변 참조).

+0

응답 해 주셔서 감사합니다. 내가 제안한 것을 시도 할 때 .mhtml 파일의 텍스트가 임베드됩니다 (예 : 메모장에서 열어 본 것처럼). IE에서 파일을 열면 보고서가 표시되지 않습니다. – Pops

+0

최소한의 예제 .mhtml 파일 (보고서)을 게시 할 수 있습니까? '@body_format = 'html''을 설정 했습니까? – ahoxha

+0

어디에 문제가 있는지 알 수 있습니다. 파일이 HTML이지만 MHTML이 아닌 경우에만 작동합니다. – ahoxha

4

사람들이 궁금해하는 경우에, 이것은 mhtml을 html로 변환하여 SQL을 사용하는 방법입니다.

declare @source varchar(max), 
@decoded varchar(MAX) 

SELECT @source =BulkColumn 
FROM OPENROWSET(BULK N'c:\test\test.mhtml',SINGLE_BLOB) x; 

SET @source = SUBSTRING(@source,CHARINDEX('base64',@source,1)+10,LEN(@source)) 
SET @source = SUBSTRING(@source,1,CHARINDEX('-',@source,CHARINDEX('base64',@source,1)+10)-5) 
SET @decoded = cast('' AS xml).value('xs:base64Binary(sql:variable("@source"))', 'varbinary(max)') 

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = N'Email', -- you should use the profile name of yours, whatever is set up in your system. 
@recipients = 'recipient_email_id', 
@subject = 'Test', 
@body = @decoded, 
@body_format = 'html', 
@from_address = 'sender_email_id';