zoukankan      html  css  js  c++  java
  • 用sqlserver数据库的作业实现邮件提醒

    实现效果:

          定期向发送邮件信息,来提醒他们已经X天没有登录了。(X是自己定义的)

    实现原理:

          用到了sqlserver的“作业”,“数据库邮件”以及“存储过程”

    所用到的数据:

          用到了用户表,表名为:tb_Admin。下面展示要用到的主要的字段:

    字段名称

    解释

    Id

    主键

    RealName

    用户真实姓名

    LoginTime

    显示用户的登录时间

    UserEmail

    用户邮箱

    存储过程的实现:

    最近刚学习sqlserver,可能写的不是太好。但是最终效果是能实现的。如果大家有什么更好的想法,希望给我留言,让我学到更多的东西。

    存储过程功能:实现传过来相应参数,从而输出获得数据的邮箱,以及用户真实姓名:

    具体代码如下:

    Create PROCEDURE [dbo].[SendEmail] @count int,@email nvarchar(50) output,@name nvarchar(20) output
    AS
    BEGIN
    select @email= UserEmail,@name=RealName from (select *,ROW_NUMBER() over(order by Id) rownum from tb_Admin where DATEDIFF(DD,LoginTime,GETDATE())>30) t where t.rownum =@count
    END

    数据库“邮件服务”的建立:

          如图所示:

     

     

     

     

     

     

    大家可以用这个查询语句来检测自己的邮件服务是否可用

    use msdb
    
    go
    
    exec dbo.sp_send_dbmail @profile_name='配置文件名',
    
    @recipients='邮箱地址',
    
    @subject='这是测试邮件',
    
    @body = '这是测试内容'

    刚才上面的邮件服务的具体的实例如下:

    use msdb
    
    go
    
    exec dbo.sp_send_dbmail @profile_name='管理员',
    
    @recipients='1548288966@qq.com',
    
    @subject='这是测试邮件',
    
    @body = '这是测试内容'

    效果如图所示:

    邮箱收到的内容如下:

     

    Sqlserver作业的建立:

         

     

    框中所放的T-SQL的脚本如下:

    declare @counttest int;
    
    declare @email nvarchar(50);
    
    declare @content nvarchar(100)
    
    declare @name nvarchar(20);
    
    select @counttest = COUNT(*) from KJCXB.dbo.tb_Admin where DATEDIFF(DD,LoginTime,GETDATE())>30;
    
    while @counttest >0
    
    begin
    
        exec KJCXB.dbo.SendEmail @counttest,@email output,@name output;
    
        set @counttest = @counttest-1;
    
        if @email is not null and LEN(@email)>1
    
        begin
    
           set @content = @name+',你好,你已经超过天没有登录科技创新部了,创新部的成长需要你我共同关注,欢迎回来看看:kjcx.heuu.edu.cn';
    
           exec msdb.dbo.sp_send_dbmail @profile_name='管理员',
    
           @recipients=@email,
    
           @subject='回家看看',
    
           @body = @content
    
        end
    
    end

     

    我们会看到作业下面已经有我们自己建立的作业了

    可以如下检测一下:

     

    然后我们的相应的邮箱会收到如下邮件:

     

    这样就成功了,数据库会按照我们设定好的作业来检测相应的未登录超过三十天的用户,然后给他们发送提示邮件。

  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/huanbia/p/3113597.html
Copyright © 2011-2022 走看看