2017-03-17 9 views
11

मेरे पास एक एसएसआरएस रिपोर्ट है जिसे मुझे SQL सर्वर में sp_dbmail संग्रहीत प्रो का उपयोग करके ईमेल के बॉडी में एम्बेड करने की आवश्यकता है। मैं फ़ाइल को संलग्न करते समय "टेक्स्ट के रूप में सम्मिलित करें" विकल्प का उपयोग करके एसएसआरएस रिपोर्ट के .mtml निर्यात को जोड़कर 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 की सामग्री को एम्बेड कर देंगे। बेशक, आप शरीर में और जोड़ सकते हैं।

अद्यतन:

यह काम करता है फ़ाइल आप पढ़ रहे हैं एचटीएमएल सामग्री शामिल करते हों। यदि आप इसे mhtml के लिए काम करना चाहते हैं, तो आपको mhtml फ़ाइल को html में कनवर्ट करने की आवश्यकता है (mhtml से html में कनवर्ट करने के तरीके के विवरण के लिए @Pops द्वारा पोस्ट किया गया उत्तर देखें)।

+0

प्रतिक्रिया के लिए धन्यवाद। जब मैंने आपके द्वारा सुझाए गए प्रयासों का प्रयास किया, तो यह .mhtml फ़ाइल का पाठ एम्बेड करता है (जैसा कि मैंने देखा होगा अगर मैंने इसे नोटपैड में खोला है)। यह रिपोर्ट प्रस्तुत नहीं करता है क्योंकि यह देखेगा कि मैंने आईई में फाइल खोली है या नहीं। – Pops

+0

क्या आप न्यूनतम उदाहरण '.mhtml' फ़ाइल (आपकी रिपोर्ट) पोस्ट कर सकते हैं? क्या आपने '@body_format = 'html'' सेट किया था? – ahoxha

+0

मुझे लगता है कि समस्या कहां है। यह केवल तभी काम करता है जब फ़ाइल HTML है लेकिन एमएचटीएम नहीं है। – ahoxha

4

यदि लोग सोच रहे हैं, तो इस तरह मैंने एसक्यूएल का उपयोग करके एमएचटीएमएल को एचटीएमएल में परिवर्तित किया।

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'; 
संबंधित मुद्दे