Отправляет email-рассылки с помощью сервиса Sendsay

MS SQL Server

  Все выпуски  

MS SQL Server - дело тонкое...


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

#066<<  #067

СОВЕТ

Пример запроса, использующего xp_sendmail для отправки групповых сообщений
По материалам статьи Kunal Das на sqlservercentral.com: " Using Xp_sendmail With the Recipients Generated From a Query"
Перевод Александра Гладченко

xp_sendmail - это мощная утилита, с помощью которой SQL Server обеспечивает отсылку по электронной почте сообщений непосредственно от SQL Server, используя допустимый MAPI профиль. Однако, его синтаксис довольно строгий и если Вы самостоятельно напишите адрес электронной почты, это прекрасно будет работать. Например:


Xp_sendmail 'kdas@it-enterprises.com', 'Hello'

Но для извлечения адресов электронной почты из таблицы, я назвал её "TEST_TABLE" в базе данных по имени Test, и для использования результатов запроса адресов в качестве параметров для xp_sendmail, придётся использовать T-SQL скрипт, который Вы можете оформить, как хранимую процедуру:


Use Test

Declare @MyRecipients nvarchar (255)

Declare @MyMessage nvarchar (255)

Set @MyMessage = 'Your timesheet is overdue, please send it ASAP.'

Declare MyCursor Cursor For

Select email_address From Test_table  Where Status = 0

Open MyCursor

Fetch Next From MyCursor Into @MyRecipients

While @@Fetch_Status = 0

BEGIN

Print @MyRecipients

Fetch Next From MyCursor Into @MyRecipients

Exec Master.dbo.xp_sendmail @MyRecipients, @MyMessage

End

Close MyCursor

Deallocate MyCursor

Здесь, мы просто по одному получаем каждый адрес, вызываем xp_sendmail и отсылаем сообщение на этот адрес. Это очень удобно, когда Вы хотите послать уведомление людям, чьи адреса Вы храните в базе данных. Этот небольшой скрипт очень полезен. Я написал этот скрипт и изменил его так, чтобы я мог отсылать уведомления каждую пятницу продавцам, кто не прислал свой timesheets. Их адреса запрашиваются из таблицы, основанной на состоянии их timesheet, значение которого равное '0', говорит о том, что их timesheet не был предоставлен. Я оформил это как задание, которое будет выполнено каждую пятницу в 8 часов утра, что избавило меня от написания для этих целей специального приложения на VB. Вы можете изменить этот скрипт так, чтобы в таблице хранились насколько адресов в одном поле, что бы каждое сообщение было послано не только на один адрес электронной почты, однако, Вы должны будете изменить запрос подобно этому:


Select email_Address+';' From Test_Table Where Status = 0

Это необходимо сделать потому, что Outlook требует для разделения множественных адресов использование разделителя в виде точки с запятой, а вам нужно обеспечить соответствие синтаксису xp_sendmail. Также, не волнуйтесь по поводу последнего адреса в строке, имеющем оконечную точку с запятой, поскольку Outlook игнорирует её.

Новости проекта SQL.RU

Благодаря помощи друзей проекта SQL.RU открыт ICQ ActiveList: 131773618
Приглашаем Вас воспользоваться ещё одной возможностью общения на тему MS SQL Server.

Новые технические статьи Microsoft

FIX: Merge Join with Rank Operator May Produce Incorrect Results (Q306890)
FIX: Bcp.exe Ignores -R Regional Settings Switch When Using Format File (-f) (Q292648)
FIX: Large Query Text from Socket Client May Cause Open Data Services Access Violation (Q187278)
FIX: Complex CASE Clause on Query May Cause Error 8621 and Terminate Batch (Q306998)
BUG: Paging an Operator May Not Work After You Apply Service Pack 1 (Q305354)
FIX: SQL Server Service Manager Fails with "The system cannot find the file specified" Error Message (Q308010)
PRB: SQL Server 2000 Fails to Install on a Cluster If Service Startup Account Contains a Space (Q296890)
PRB: SQL Server 2000 Desktop Engine Error Message: "Error 126 loading library sqlcax.dll" (Q307196)
FIX: Nonclustered Indexes Rebuilt For CREATE UNIQUE CLUSTERED INDEX ... WITH DROP_EXISTING Query (Q304519)
HOW TO: Obtain the Current Day with a MDX Query or Expression (Q301537)
FIX: Querying Syslockinfo with Large Numbers of Locks May Cause Server to Stop Responding (Q307655)

#066<<  #067

Вопросы, предложения, коментарии, замечания, критику и т.п. присылайте Александру на адрес: MSSQLHelp@pisem.net

sql.ru

Описание рассылки
 Поиск на SQL.RU
Искать: 
Результатов на странице: Формат:
Тип запроса: Раздел:
МИНИФОРМА
ПОДПИСКИ




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

В избранное