2017-03-17 30 views
11

SQL Serverのsp_dbmailストアドプロシージャを使用して電子メールの本文に埋め込む必要があるSSRSレポートがあります。私はOutlookのフロントエンドを使用してファイルを添付するときに "テキストとして挿入"オプションを使用してSSRSレポートの.mhtmlエクスポートを添付してこれを行うことができます。sp_send_dbmail本文に埋め込みmhtmlファイル

sp_dbmail sprocを使用してこれを行う方法はありますか?

私が使用しているSQL Serverの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'; 
関連する問題