Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 отправка письма в html формате  [new]
linav
Guest
Здравствуйте,

не могу разобраться в чем проблема, пытаюсь сделать отправку письма в html формате, в текстовом формате вообще без проблем
помогите, пожалуйста!

ms sql 2008 r2 ошибка:
Сообщение 22050, уровень 16, состояние 1, строка 0
Error formatting query, probably invalid parameters
Сообщение 14661, уровень 16, состояние 1, процедура sp_send_dbmail, строка 504
Ошибка выполнения запроса: Сообщение 102, уровень 15, состояние 1, сервер HRMTDB, строка 1
Неправильный синтаксис около конструкции "<".

ms sql 2005 ошибка:
Сообщение 0, уровень 11, состояние 0, строка 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.

declare @tHTML nvarchar(max)
if object_id('tempdb..#mytbl') is not null drop table #mytbl
create table #mytbl (id int not null identity, x int)
insert into #mytbl(x) values
	(1),(2),(3),(4),(5)

set @tHTML =	N'<html><body><H1>MyReport</H1>' +
				N'<table border="1">' +
				N'<tr><th>id</th><th>x</th></tr>' +
				cast((	select 
								td = t.id,
								td = t.x
							from  #mytbl t 
							for xml path('tr'), type 
					) as nvarchar(max) ) +
				N'</table></body></html>'; 
select @tHTML 

exec msdb.dbo.sp_send_dbmail
	  @profile_name = 'myprof'
	, @recipients = 'myemail@mydomen.com'
	, @subject = 'Test message'
	, @body = N'Вам письмо'
	, @query = @tHTML
	, @attach_query_result_as_file = 0
	, @body_format = 'HTML'
20 ноя 14, 07:30    [16875858]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
linav
Guest
ошибочка вышла, хотя она и ничего не меняет, глобальные ошибки остались теже

set @tHTML =	N'<html><body><H1>MyReport</H1>' +
				N'<table border="1">' +
				N'<tr><th>id</th><th>x</th></tr>' +
				cast((	select 
								td = t.id, '',
								td = t.x
							from  #mytbl t 
							for xml path('tr'), type 
					) as nvarchar(max) ) +
				N'</table></body></html>'; 
20 ноя 14, 07:47    [16875878]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
Glory
Member

Откуда:
Сообщений: 104760
linav
ошибочка вышла, хотя она и ничего не меняет, глобальные ошибки остались теже

А вы знакомились в хелпе с описанеим параметра @query ?
Может смотрели примеры в том же хелпе ?
20 ноя 14, 09:02    [16876056]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
linav
Guest
Glory
linav
ошибочка вышла, хотя она и ничего не меняет, глобальные ошибки остались теже

А вы знакомились в хелпе с описанеим параметра @query ?
Может смотрели примеры в том же хелпе ?


Если Вас не сильно затруднит, то подскажите, пожалуйста, что же я неправильно сделала?
20 ноя 14, 09:18    [16876123]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
Glory
Member

Откуда:
Сообщений: 104760
linav
Если Вас не сильно затруднит, то подскажите, пожалуйста, что же я неправильно сделала?

А что в хелпе непоянтно что-то написано ?
Или два примера там непонятны ?
20 ноя 14, 09:22    [16876132]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
Visibus
Member

Откуда:
Сообщений: 32
Вот так попробуйте:

exec msdb.dbo.sp_send_dbmail
	  @profile_name = 'myprof'
	, @recipients = 'myemail@mydomen.com'
	, @subject = 'Test message'
	, @body = @tHTML
	, @attach_query_result_as_file = 0
	, @body_format = 'HTML'
20 ноя 14, 09:23    [16876137]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
linav
Guest
Ув. Glory,
большое спасибо Вам!
но что Вам мешало сразу сказать заменить @query на @body... хотя у каждого свои методы обучения нас неразумных %)

Visibus, вам также большое спасибо!
20 ноя 14, 10:05    [16876374]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
Glory
Member

Откуда:
Сообщений: 104760
linav
но что Вам мешало сразу сказать заменить @query на @body... хотя у каждого свои методы обучения нас неразумных %)

Что вам мешало узнать о каждом параметре в хелпе ?
Или вы всегда изучаете синтаксис не по хелпу, а путем опроса в форумах ?
В следующий раз, когда вам вздумается засунуть @tHTML, например, в @recipients вы тоеж придете спрашивать - а что не так ?
20 ноя 14, 10:09    [16876397]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
linav
Guest
Ув. Glory, я очень искренне рада, что Вы абсолютно идеальный человек, что Вы все и всегда делаете абсолютно правильно, что вокруг Вас абсолютно идеальный мир, а мы, простые людишки, бывает ошибаемся, бывает просто бываем невнимательными (как в данном моем случае), да и наш мир далек от совершенства
Хотя к чему я об этом здесь, все таки этот форум для других целей
Но справедливости ради все таки скажу, что я действительно Вам благодарна за неоднократную помощь на этом форуме.
Как то вот так
20 ноя 14, 10:16    [16876448]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
Glory
Member

Откуда:
Сообщений: 104760
linav
Хотя к чему я об этом здесь, все таки этот форум для других целей

Конечно, форум для того, чтобы за вас читать хелп.
За 2 часа, прошедшие от публикации вами вопроса до получения ответа, статью http://msdn.microsoft.com/ru-ru/library/ms190307.aspx можно было прочитать раз 100
И два примера из нее тоже разобрать раз 100

Б.Отправка сообщения электронной почты с результатами запроса
В данном примере посылается сообщение электронной почты Дэну Уилсону с использованием адреса danw@Adventure-Works.com. Сообщение имеет тему Work Order Count и выполняет запрос, который показывает количество заявок на выполнение работ с меньшим DueDate, чем через два дня после 30 апреля 2004 г. Компонент Database Mail прикрепляет результаты в виде текстового файла.
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @query = 'SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
                  WHERE DueDate > ''2004-04-30''
                  AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1 ;

В.Отправка сообщения электронной почты в формате HTML
В этом примере сообщение электронной почты посылается Дэну Уилсону по адресу danw@Adventure-Works.com. Сообщение имеет тему Work Order List и содержит документ HTML, который показывает количество заявок на выполнение работ с меньшим сроком DueDate, чем через два дня после 30 апреля 2004 г. Компонент Database Mail посылает результаты в формате HTML.
DECLARE @tableHTML  NVARCHAR(MAX) ;

SET @tableHTML =
    N'<H1>Work Order Report</H1>' +
    N'<table border="1">' +
    N'<tr><th>Work Order ID</th><th>Product ID</th>' +
    N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +
    N'<th>Expected Revenue</th></tr>' +
    CAST ( ( SELECT td = wo.WorkOrderID,       '',
                    td = p.ProductID, '',
                    td = p.Name, '',
                    td = wo.OrderQty, '',
                    td = wo.DueDate, '',
                    td = (p.ListPrice - p.StandardCost) * wo.OrderQty
              FROM AdventureWorks.Production.WorkOrder as wo
              JOIN AdventureWorks.Production.Product AS p
              ON wo.ProductID = p.ProductID
              WHERE DueDate > '2004-04-30'
                AND DATEDIFF(dd, '2004-04-30', DueDate) < 2 
              ORDER BY DueDate ASC,
                       (p.ListPrice - p.StandardCost) * wo.OrderQty DESC
              FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX) ) +
    N'</table>' ;

EXEC msdb.dbo.sp_send_dbmail @recipients='danw@Adventure-Works.com',
    @subject = 'Work Order List',
    @body = @tableHTML,
    @body_format = 'HTML' ;
20 ноя 14, 10:24    [16876509]     Ответить | Цитировать Сообщить модератору
 Re: отправка письма в html формате  [new]
Glory
Member

Откуда:
Сообщений: 104760
linav
Ув. Glory, я очень искренне рада, что Вы абсолютно идеальный человек, что Вы все и всегда делаете абсолютно правильно, что вокруг Вас абсолютно идеальный мир, а мы, простые людишки, бывает ошибаемся, бывает просто бываем невнимательными (как в данном моем случае), да и наш мир далек от совершенства

Офигеть. Т.е. даже после указание на то, что проверить и где про это написано, нужно сидеть и сетовать на свою горькую судьбу
20 ноя 14, 10:25    [16876520]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить