473,799 Members | 3,161 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

sp_send_cdosysm ail - Parameter Inside Body of Email

I currently have a web form posting back to a SQL table using a Stored
Procedure. Part of this SP is that it pulls data from another table
and inserts a new row into the registration table.

I want to have a trigger on the registration table that will fire when
the row is inserted which will use the sp_send_cdosysm ail sproc to send
an e-mail to the user.

However, I want to be able to include the value of one of the fields
within the BODY of the message. I can't find a way to include
parameters/variables within the Body of a message using
sp_send_cdosysm ail and it's driving me nuts.

Here's what I have in a sproc (not a trigger) that executes
sp_send_cdosysm ail...I currently pass a parameter for the "To" e-mail
address and that works fine.

_______________ _______________ _______________ ____
EXEC sp_send_cdosysm ail
'f************* **@testcompany. com',
@stremail, <--This is the Parameter passed for the "To" e-mail addy
-->

'Test Subject',
'Test Body,
Additional Text
Additional Text
<--THIS IS WHERE I WANT TO PUT THE PARAMETER-->
Additional Text
Additional Text'

_______________ _______________ _______________ ______
Is there any way to do this?

The sp_send_cdosysm ail I used is the standard MS one..Here it is for
reference:
Thanks for any help offered!

Elliot

CREATE PROCEDURE [dbo].[sp_send_cdosysm ail]
@From varchar(100) ,
@To varchar(100) ,
@Subject varchar(100)=" ",
@Body varchar(4000)

/*************** *************** *************** *************** *********

This stored procedure takes the parameters and sends an e-mail.
All the mail configurations are hard-coded in the stored procedure.
Comments are added to the stored procedure where necessary.
References to the CDOSYS objects are at the following MSDN Web site:
http://msdn.microsoft.com/library/de..._messaging.asp

*************** *************** *************** *************** ***********/
AS
Declare @iMsg int
Declare @hr int
Declare @source varchar(255)
Declare @description varchar(500)
Declare @output varchar(1000)

--************* Create the CDO.Message Object *************** *********
EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT

--*************** Configuring the Message Object *************** ***
-- This is to configure a remote SMTP server.
--
http://msdn.microsoft.com/library/de..._sendusing.asp
EXEC @hr = sp_OASetPropert y @iMsg,
'Configuration. fields("http://schemas.microso ft.com/cdo/configuration/sendusing").Val ue','1'
-- This is to configure the Server Name or IP address.
-- Replace MailServerName by the name or IP of your SMTP Server.
EXEC @hr = sp_OASetPropert y @iMsg,
'Configuration. fields("http://schemas.microso ft.com/cdo/configuration/smtpserver").Va lue',
'SMTPServer'

-- Save the configurations to the message object.
EXEC @hr = sp_OAMethod @iMsg, 'Configuration. Fields.Update', null

-- Set the e-mail parameters.
EXEC @hr = sp_OASetPropert y @iMsg, 'To', @To
EXEC @hr = sp_OASetPropert y @iMsg, 'From', @From
EXEC @hr = sp_OASetPropert y @iMsg, 'Subject', @Subject

-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
EXEC @hr = sp_OASetPropert y @iMsg, 'TextBody', @Body
EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

-- Sample error handling.
IF @hr <>0
select @hr
BEGIN
EXEC @hr = sp_OAGetErrorIn fo NULL, @source OUT, @description OUT
IF @hr = 0
BEGIN
SELECT @output = ' Source: ' + @source
PRINT @output
SELECT @output = ' Description: ' + @description
PRINT @output
END
ELSE
BEGIN
PRINT ' sp_OAGetErrorIn fo failed.'
RETURN
END
END

-- Do some error handling after each step if you have to.
-- Clean up the objects created.
EXEC @hr = sp_OADestroy @iMsg
GO

Jul 23 '05 #1
2 8993
I'm not sure I understand you completely, but here's one possibility:

declare @Body varchar(4000)
declare @IncludeThis varchar(100)

set @Body = 'This is the body of my email, and I want my value to go
<<HERE>>'
set @IncludeThis = 'at the end of this line.'
set @Body = replace(@Body, '<<HERE>>', @IncludeThis)

exec sp_send_cdosysm ail ...

By the way, sending emails from triggers is usually considered a rather
risky approach - since triggers operate in a transaction, if the email
process takes a long time or hangs, then the trigger may block other
users.

An alternative solution is to add a flag column to your registrations
table which indicates if an email has been sent, then schedule a job to
run every half hour (or whatever) and send out the emails based on the
flag.

Simon

Jul 23 '05 #2
Thanks for this. While that wouldn't work as you described (through no
fault of yours...I realize my question was a little convoluted) you
pointed me in the right direction.

I just needed to declare and set the @Body in the SProc that called the
sp_send_csosysm ail procedure and then pass it on as the body of the
message. Then it's just standard T-SQL to combine a string with the
variable. It seems so simple now.

Also, thanks for the pointer about triggers as I hadn't thought of
that. I do have a trigger, but it executes a SP on the same database
that does all the actual work.

Thanks for the help!

Elliot

Simon Hayes wrote:
I'm not sure I understand you completely, but here's one possibility:

declare @Body varchar(4000)
declare @IncludeThis varchar(100)

set @Body = 'This is the body of my email, and I want my value to go
<<HERE>>'
set @IncludeThis = 'at the end of this line.'
set @Body = replace(@Body, '<<HERE>>', @IncludeThis)

exec sp_send_cdosysm ail ...

By the way, sending emails from triggers is usually considered a rather risky approach - since triggers operate in a transaction, if the email process takes a long time or hangs, then the trigger may block other
users.

An alternative solution is to add a flag column to your registrations
table which indicates if an email has been sent, then schedule a job to run every half hour (or whatever) and send out the emails based on the flag.

Simon


Jul 23 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
1605
by: Dev | last post by:
Hi Fellows, I am trying to write a User Defined Function in SQL 2000 to accept a Parameter of type Text Field and then Do a replace function to manipulate the some strings inside that text data. (Scenario: I have an email body and i have to replace some tags like <^ContactEmail^> and others to get the actual Data from the DB, I can do this) but my problem I cannot do a replace function a text data type and the SQL BOL says I have to use...
1
4665
by: Thomas Schoen | last post by:
Hi, is it possible to use a parameter of a plpgsql-function to order a selection inside the function? What i would like to do is pass a column-name/alias-name to a plpgsql function and use the variable as order-by-parameter like this: create function foo(varchar) RETURNS SETOF test AS '
10
2516
by: Sean Dockery | last post by:
I have the following HTML file that I've been using for testing... <html> <head> <script type="text/javascript"> <!-- function handleWindowLoad() { var items = ; for (var i = 0; i < 11; i++) { items = "item" + (i + 1);
11
3005
by: Simon Wigzell | last post by:
My website sends automatic emails from many (25) different places. I want to send a second email by reading the parameters of the first one. I don't want to have to repeat and maintain the assignment of the second email From,To,Subject fields so I am just using an include at each point in the code where I send an email: Set MyCDONTSMail = CreateObject("CDONTS.NewMail") MyCDONTSMail.BodyFormat= 0 MyCDONTSMail.MailFormat= 1...
8
3027
by: fernandezr | last post by:
I would like to use a user control as a template inside a repeater. Some of the fields in the control should be hidden depending on whether or not there is data. I'm still a ASP .Net newbie so the way I'm going about doing this might be a little off. I'd appreciate some help. Below is the code I have thus far but I'm not sure how to reference the user control within the foreach loop. <asp:Panel ID="pnlRosterProfile" runat="Server" />
15
54653
by: main() | last post by:
Hi all, When i compile following piece of code, # include <stdio.h> void fun(int val) { int val; /*problem is here*/ printf("%d\n",val);
16
3167
by: hzmonte | last post by:
Correct me if I am wrong, declaring formal parameters of functions as const, if they should not be/is not changed, has 2 benefits; 1. It tells the program that calls this function that the parameter will not be changed - so don't worry. 2. It tells the implementor and the maintainer of this function that the parameter should not be changed inside the function. And it is for this reason that some people advocate that it is a good idea to...
1
2383
by: jadeite100 | last post by:
Hi: I am having problem passing an xsl param variable as a parameter to a javascript function inside an xsl styelsheet. Here is my xsl stylesheet. I am trying to pass a variable called numberOfRecordsFromDatabase to
35
1974
by: Rick Giuly | last post by:
Hello All, Why is python designed so that b and c (according to code below) actually share the same list object? It seems more natural to me that each object would be created with a new list object in the points variable. class Blob: def __init__(self, points=): self._points = points
0
9687
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10484
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10251
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10228
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10027
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9072
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
6805
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5463
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
3759
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.