July 23, 2004 at 9:04 am
I want to send a reminder every morning to users with overdue actions. (Actions due by yesterday)
So I need to loop through the actions table and identify users with outstanding actions.
I then need to construct an email for each user containing a summary of overdue actions.
I guess that 8000 characters @Message probably enough but as I can't be sure might be better to create an attachment.
Not really sure where to start and would appreciate a pointer to any examples which demonstrate XPSMTP being used for multiple emails. I guess I need two loops, one for the users and one to create the message text if I create a procedure and run this from a job. Alternatively would I be better off using DTS and creating a file.
July 23, 2004 at 10:03 am
A thought, the userid is in the Actions table so I could order the Actions on userid, build a message while the userid stayed the same. Then email this before moving on to the next user.
I guess a cursor best way of doing this if I can live with the 8000 character limit. Otherwise I guess that I have to use DTS and create a text file.
Ideas on approach and pointers to examples would be much appreciated.
July 23, 2004 at 10:04 am
Check http://www.sqldev.net/xp/xpsmtp.htm#Usage for sample of "using variables".
July 23, 2004 at 10:11 am
Hey StephanJ
Some approaches that I could think of are:
[Approach 1 : Go SQL Server all the way]
1) Create a stored procedure to identify user e-mails with overdue stuff from yesterday then use a cursor and the xp_sendmail SQL Server system extended stored procedure to send the e-mail reminders (for info on xp_sendmail, refer to http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_xp_aa-sz_6hbg.asp)
2) Create a job that calls the stored proc. Schedule the job to run daily starting at xx:xx a.m.
[Approach 2 : Go SQL Server half-way]
1) Create a VBScript file to do the e-mail stuff from step 1 in Approach 1 (do a search for CDONTS in either http://www.google.com OR http://www.msdn.com for examples on how to use the CDONTS e-mail component from VBScript). This script file would still use the "identify user e-mails with overdue stuff from yesterday" functionality of the stored proc.
2) Create another stored procedure that uses the xp_cmdshell SQL Server extended system stored procedure to run the script file from step 1 from the command prompt (for info on xp_cmdshell, refer to http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_xp_aa-sz_4jxo.asp)
Example: Command string for launching a VBScript file called send_overdue_reminders.vbs located in, say folder, C:\Scripts would be C:\Scripts\send_overdue_reminders.vbs
3) Create a job that calls the stored proc from step 2. Schedule the job to run daily starting at xx:xx a.m.
[Approach 3 : Other]
1) Same as step 1 from Approach 2
2) Run the script as a Windows NT service using the command string from step 2 in Approach 2.
Hopefully this will help you get started. At the end, you would need to choose which approach works best for your situation.
Good Luck,
JP
July 23, 2004 at 10:30 am
Allen, thanks for the link, I did actually look at my print out of the file before asking the question.
July 23, 2004 at 10:35 am
JP, thanks for your detailed answer.
[Approach 1 : Go SQL Server all the way]
I could not get XP_SendMail to work so based on the advice on this site went the XP_SMTP_SENDMAIL route and found it worked perfectly.
However following the link and looking at the examples, I guess I could adapt these using XP_SMTP_SENDMAIL. Will give it a go.
I just had another thought, in a cursor I could test for the message length > than 8000 characters and send a second email if it is.
July 26, 2004 at 5:14 pm
StefanJ
You may find the attached useful by sending email as HTML.
VBScript Interfaces in SQL Server 2000 Let You Transform Data and Provide Reports to Your Users
http://msdn.microsoft.com/msdnmag/issues/02/08/VBScriptandSQLServer2000/default.aspx
Tony
July 27, 2004 at 2:43 am
Tony, that looks really good. Many thanks.
Stefan
Viewing 8 posts - 1 through 7 (of 7 total)
You must be logged in to reply to this topic. Login to reply