sp_send_dbmail вставить файл mhtml в тело

У меня есть отчет SSRS, который мне нужно встроить в тело письма с использованием хранимой процедуры sp_dbmail в SQL Server. Я могу сделать это, используя внешний интерфейс Outlook, добавив экспорт .mhtml отчета SSRS с помощью опции «Вставить как текст» при прикреплении файла.

Есть ли способ, которым я могу это сделать, используя sp_dbmail sproc?

Я использую стандарт SQL Server 2014

Да, это возможно, читая содержимое файла в переменной, а затем передавая его в 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'; 
  • SQL - объединение последовательных строк даты на основе столбца
  • Какие учетные данные необходимо передавать при доступе к отчету SSRS через URL-адрес?
  • Обновление каскадных параметров в отчете SSRS для выбора даты
  • SSRS Subreport выполняется несколько раз, я хочу, чтобы он выполнялся один раз
  • Запрос SQL для исключения определенных дат для ssrs
  • Как перемещать столбцы деталей между родительскими группами в SSRS
  • SQL find Клиенты, с которыми не удалось связаться за последние 45 дней
  • SQL Выберите только месяц из формата YYYYMMDD int
  • Epicor 10 (ERP) Ошибка отчетности SSRS: максимум 1024 столбца возвращены
  • Записи SSRS не отображаются, когда используется (выберите все), но при выборе особого значения
  • Как указать, что значение НЕ МЕНЕЕ в параметре
  • Interesting Posts

    Предложение SQL Order By с группой

    Удаление имен таблиц со специальным символом

    Запрос T-SQL для выбора только строк, которые не имеют уникального значения в определенном столбце

    Использование Rails 2.x с MS SQL Server 2005

    Использовать таблицу несколько раз в инструкции SELECT

    sql query – присоединяться, чтобы возвращать только последнюю строку

    Точность сравнения DateTime.now C # и GetDate () от SQL

    Наращивание запросов SQL Server

    Примеры чувствительности к регистру и базы данных

    Что вы делаете, когда ваш первичный ключ переполняется?

    Ограничения в базе данных, отправленной журналом

    Получать вложенные XML-сервер sql-сервера

    Когда запрос / подзапрос возвращает NULL и когда нет значения вообще?

    Оптимизированный способ проверки отдельных значений в столбце

    Необходимо объявить время и хотите, чтобы getdate () возвратил только дату и присоединил оба результата

    Давайте будем гением компьютера.