【问题标题】:SQL Server email queueSQL Server 电子邮件队列
【发布时间】:2016-04-08 18:41:49
【问题描述】:

我有一个经常填充新订单的订单表

订单表:

OrderID    OrderName    EmailAddress        Status
-----------------------------------------------------
1          iphone       test@gmail.co.uk    New
2          samsung      nw@gmail.com        New
3          nexus        f@gmail.com         Approved

对于每个具有status = 'New' 的订单行,我想设置一个作业,每 30 分钟运行一次,向这些收件人发送一封电子邮件。

【问题讨论】:

  • 昨天有人问了一个几乎相似的question,您可以将其与计划作业结合起来

标签: sql sql-server email


【解决方案1】:

据我了解,如果订单状态为“新”,您需要安排一个发送电子邮件通知的作业。

如果是这样,请创建以下存储过程

CREATE PROCEDURE NewOrders_Job
AS
BEGIN
    DECLARE @OrderName varchar(200), @EmailAddress varchar(200)
    SELECT
        @OrderName = ' You have a sale for '+[OrderName]+', at +'CONVERT(VARCHAR(10),GETDATE(),)'+'
        ,@EmailAddress = [EmailAddress]
    FROM [Orders table]
    WHERE 
        [Status] = 'New'


    IF(ISNULL(@EmailAddress,'')<>'')
    BEGIN
        --mail
        DECLARE
         @profile_name VARCHAR(200)
        ,@recipients VARCHAR(MAX)
        ,@copy_recipients VARCHAR(MAX)
        ,@blind_copy_recipients VARCHAR(MAX)
        ,@body VARCHAR(MAX)
        ,@body_format VARCHAR(MAX)
        ,@subject VARCHAR(MAX)  


        EXEC msdb.dbo.sp_send_dbmail 
            @profile_name = 'Your_Profile_Name'  
            ,@recipients = @EmailAddress  
            ,@copy_recipients = 'youremail@domain.com'
            ,@blind_copy_recipients = 'admin@yourdomain.com'
            ,@body = @OrderName 
            ,@body_format = 'HTML'  
            ,@subject = 'You have a new sales Order'; 
    END
END

现在,使用上述存储过程创建一个运行 30 分钟的新作业

【讨论】:

    猜你喜欢
    • 2022-08-13
    • 1970-01-01
    • 2023-04-04
    • 2010-09-06
    • 2011-01-14
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多