sp_send_dbmail вставить файл mhtml в тело
У меня есть отчет SSRS, который мне нужно встроить в тело письма с использованием хранимой процедуры sp_dbmail в SQL Server. Я могу сделать это, используя внешний интерфейс Outlook, добавив экспорт .mhtml отчета SSRS с помощью опции «Вставить как текст» при прикреплении файла.
Есть ли способ, которым я могу это сделать, используя sp_dbmail sproc?
Я использую стандарт SQL Server 2014
- Задайте значение параметра SSRS Report Parameter с переданным значением Querystring в SSRS
- Цвет клиента в выражении IIF -SSRS
- Как показать промежуточное и общее количество групп в ssrs
- Диспетчер отчетов SSRS + выглядит странно
- Перемещение только подписки с SSRS 2008 на SSRS 2012
- Несколько отчетов в SSRS с использованием той же хранимой процедуры
- Результат SSRS отличается от результата SSMS тем же запросом
- Как фильтровать столбец, используя список параметров нескольких значений в SSRS
- Как установить описание папки во время развертывания с помощью Visual Studio?
- Как получить данные из собственной таблицы ссылок в sql
- Отправить отчет SSRS по электронной почте
- Несколько гипер-ссылок в одной ячейке в отчете SSRS
- SSRS - повторное использование временной таблицы в нескольких наборах данных
Да, это возможно, читая содержимое файла в переменной, а затем передавая его в 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
в тело электронной почты. Конечно, вы можете добавить больше к телу.
ОБНОВИТЬ:
Это работает только в том случае, если файл, который вы читаете, содержит содержимое HTML . Если вы хотите заставить его работать для mhtml
, вам нужно преобразовать файл mhtml
в html
(см. Ответ, отправленный @Pops для получения подробной информации о том, как преобразовать mhtml
в html
).
В случае, если люди задаются вопросом, вот как я преобразовал 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';