Sql server 使用SQL Server触发器发送电子邮件(根据客户端,收件人电子邮件地址是动态的)

Sql server 使用SQL Server触发器发送电子邮件(根据客户端,收件人电子邮件地址是动态的),sql-server,eventtrigger,Sql Server,Eventtrigger,我需要创建一个触发器,以便在插入记录时向客户发送电子邮件。客户端的电子邮件位于同一数据库中的另一个表“B”中,因此我需要创建一个触发器,从表“B”中选择电子邮件地址,然后使用主键,我应该能够匹配这两个表。 如何调用此表并将这些电子邮件提取到触发器中,并将它们用作“收件人电子邮件” 不同的客户有不同的电子邮件,因此电子邮件将是动态的? 多谢各位 示例代码 -- Create an insert trigger create trigger sendEmail on tblVendTrans for

我需要创建一个触发器,以便在插入记录时向客户发送电子邮件。客户端的电子邮件位于同一数据库中的另一个表“B”中,因此我需要创建一个触发器,从表“B”中选择电子邮件地址,然后使用主键,我应该能够匹配这两个表。 如何调用此表并将这些电子邮件提取到触发器中,并将它们用作“收件人电子邮件”

不同的客户有不同的电子邮件,因此电子邮件将是动态的? 多谢各位

示例代码

-- Create an insert trigger
create trigger sendEmail on
tblVendTrans
for insert
as
 
DECLARE @sendEmail varchar(50);
DECLARE @PPL varchar(50);
DECLARE @PPL2 varchar(50);

select @PPL2 = (select strVendName FROM dbSample.dbo.tblVendors);
select @PPL = s.strVendName from inserted s;
Select @sendEmail = (select strEmail FROM dbSample.dbo.tblVendors WHERE @PPL= @PPL2);


EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Send Profile',
@recipients = @sendEmail,
@subject = 'Database Record Added',
@body_format='HTML',
@body =  @sendEmail,
@attach_query_result_as_file = 0;
 
go
你可以用

msdb.dbo.sp_send_dbmail 
对于参数@recipients,请从所需的另一个表中选择您的电子邮件 对于@body参数,您可以动态创建它


我希望它对您有所帮助

谢谢,在相同的概念下,检查我在@recipients(是否有用于获取此电子邮件的presise查询)EXEC msdb.dbo.sp_send_dbmail“@profile_name='testProfile',“@recipients=从另一个表获取收件人的电子邮件”下请求的内容“@subject='databaserecordadded'、”“@body\u format='HTML'、”“@body='testbody'、”“@attach\u query\u result\u as\u file=0;“是的,您可以在EXEC之前声明参数,并在您编写的代码下使用此参数。最好不要从触发器发送电子邮件-任何通信错误或类似错误都可能造成锁定等。您可以创建一些中间表(邮件队列),填充它(发件人、收件人和其他必填字段)在中触发并从计划作业发送电子邮件。