`
peizhiinfo
  • 浏览: 1494424 次
文章分类
社区版块
存档分类
最新评论

用C#写了一个新增用户就发送邮件和手机短信的SqlServer触发器(附源码)

 
阅读更多
分享:用C#写了一个新增用户就发送邮件和手机短信的SqlServer触发器(附源码)

欢迎大家批评指正

//针对SqlServer2005及已上版本
//CLR开发测试环境 VS2008 + Windows7
//SqlServer测试版本:SqlServer2005
//项目名:SendSMSTrigger
//编译后会产生2个类库:SendSMSTrigger.dll SendSMSTrigger.XmlSerializers.dll

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Server;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.Net.Mail;

public class SendSMSTrigger
{
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="tomail">收件人邮件地址</param>
/// <param name="title">标题</param>
/// <param name="content">邮件正文</param>
/// <param name="FormUser">发件人账号</param>
/// <param name="userPwd">发件人密码</param>

public static void sendEmail(string tomail, string title, string content, string FormUser, string userPwd)
{
MailAddress from = new MailAddress(FormUser + "@bwsyq.com");
MailAddress to = new MailAddress(tomail);
MailMessage MyMessage = new MailMessage(from, to);
MyMessage.Priority = MailPriority.Normal;
MyMessage.Priority = MailPriority.Normal;

MyMessage.IsBodyHtml = false;
MyMessage.IsBodyHtml = true;
MyMessage.Body = content;
MyMessage.BodyEncoding = System.Text.Encoding.UTF8;
MyMessage.Subject = title;

string SmtpServer = "mail.bwsyq.com";
SmtpClient client = new SmtpClient(SmtpServer);
System.Net.NetworkCredential cred = new System.Net.NetworkCredential(FormUser, userPwd);
client.Credentials = cred;
client.Send(MyMessage);

}

/// <summary>
/// 发送手机短信
/// </summary>
/// <param name="mMobilNumber">手机号码</param>
/// <param name="sMessageContent">短信内容</param>
/// <returns></returns>

public static string SendSMS(string mMobilNumber, string sMessageContent)
{
SmsInterfaceService SmsInterfaceDemo = new SmsInterfaceService();
return SmsInterfaceDemo.clusterSend("短信接口用户名", "短信接口密码",
"1360000000", mMobilNumber, sMessageContent, DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), "0|0|0|0");
}

/// <summary>
/// 针对表Users的新增CLR触发器
/// </summary>

[SqlTrigger(Name = @"SendSMSTrigger", Target = "[dbo].[Users]", Event = "FOR INSERT")]
public static void SendSMS()
{
string userName;
string realName;
string eMail;
string mobilNumber;
SqlCommand command;
SqlTriggerContext triggContext = SqlContext.TriggerContext;
SqlPipe pipe = SqlContext.Pipe;
SqlDataReader reader;

switch (triggContext.TriggerAction)
{
case TriggerAction.Insert:
// Retrieve the connection that the trigger is using
using (SqlConnection connection
= new SqlConnection(@"context connection=true"))
{
connection.Open();
command = new SqlCommand(@"SELECT * FROM INSERTED;",
connection);
reader = command.ExecuteReader();
reader.Read();
userName = (string)reader[0];
realName = (string)reader[1];
eMail = (string)reader[2];
mobilNumber = (string)reader[3];
reader.Close();

if (IsValidEMailAddress(eMail))
{
//发通知邮件
sendEmail(eMail, realName + "您好!恭喜注册成功!", " 您的用户名是:" + userName, "bwsyq@bwsyq.com", "发件人密码");
//发手机短信
SendSMS(mobilNumber, realName + "您好!恭喜注册成功! 您的用户名是:" + userName);
//SqlServer 管道返回信息
pipe.Send(realName + "您好!恭喜注册成功! 您的用户名是:" + userName);
}
}
break;
default:
break;
}
}

/// <summary>
/// 验证邮件是否合法
/// </summary>
/// <param name="email">邮件地址</param>
/// <returns><c>true</c>表示邮件地址格式合法 <c>false</c>表示邮件地址格式不合法<</returns>

public static bool IsValidEMailAddress(string email)
{
return Regex.IsMatch(email, @"^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$");
}
}

--SqlServer2005 中的挂接脚本、代码、相关说明
IF OBJECT_ID(N'Users') IS NOT NULL
drop table Users
go
CREATE TABLE Users --(测试用)用户表
(
UserName nvarchar(200) NOT NULL, --用户名
RealName nvarchar(200) NOT NULL, --真实姓名
EMail nvarchar(200) NOT NULL, --邮件地址
MobilNumber varchar(20) not null --手机号码
);
GO

--建立触发器程序集
CREATE ASSEMBLY [SendSMSTrigger.XmlSerializers.dll] from 'E:\SendSMSTrigger.XmlSerializers.dll'
WITH PERMISSION_SET = UNSAFE;
go
--建立序列化处理器程序集
CREATE ASSEMBLY SendSMSTrigger from 'E:\SendSMSTrigger.dll'
WITH PERMISSION_SET = UNSAFE;
go

--提升SqlServer支持版本
EXEC sp_dbcmptlevel N'DB_EMP2', 90
go
--开通CLR权限
EXEC sp_configure 'show advanced options' , '1';
GO
RECONFIGURE;
GO
EXEC sp_configure 'clr enabled' , '1'
GO
RECONFIGURE;
GO

IF OBJECT_ID(N'trig_SendSMSTrigger') IS NOT NULL
drop TRIGGER trig_SendSMSTrigger
go
--建立SqlServer触发器并 C#触发器关联
CREATE TRIGGER trig_SendSMSTrigger
ON Users
FOR INSERT
AS
EXTERNAL NAME SendSMSTrigger.SendSMSTrigger.SendSMS
go

--测试,模拟用户注册,成功后您将收到 注册成功通知邮件和手机短信通知
insert into Users (UserName,RealName,EMail,MobilNumber)
values('USer0001', '百万商业圈', 'bwsyq@bwsyq.com', '13818466XXX')
go


作者CSDN博客

版权所有:百万商业圈

未经许可不得转载,有任何疑问请与我本人联系 QQ 99923309 Mail:bwsyq@bwsyq.com

开源:完全自主研发搜索引擎1.0源代码及说明,单机400万网页,任意50词以内的检索不超过 20毫秒
开源:基于百万商业圈.NET开发框架开发的并行带分词的采集器

天心天字辈ERP全部PDK源代码到了我手上的后果 - 超越天心之WEB天云
分享到:
评论

相关推荐

    第05节:SQLServer触发器Demo源代码.rar

    这个资源“第05节:SQLServer触发器Demo源代码.rar”很可能是包含了一个C#项目,该项目演示了如何在应用程序中创建、使用和管理SQL Server触发器。通过学习和理解这些示例代码,开发者可以更好地掌握在C#环境中操作...

    SQL SERVER在线管理源码

    【SQL SERVER在线管理源码】是一个用于远程管理SQL Server数据库的应用程序源代码,它提供了对数据库的多种操作功能。这个源码可能包含了错误,但可以通过链接(http://download.csdn.net/source/2434932)获取修正...

    sql server触发器工作原理

    sql server触发器工作原理 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软 主要包括C# ASP.NET SQLDBA 源码 毕业设计 开题报告 答辩PPT等等好多知识

    SQLServer转SQLite源码

    标题中的“SQLServer转SQLite源码”表明这是一个用于将数据从Microsoft SQL Server迁移至SQLite数据库的程序源代码。SQLite是一个轻量级、自包含的数据库引擎,常用于嵌入式系统和个人项目,因为它不需要单独的...

    C#与sql server超市管理系统源码(含数据库脚本,亲测通过)

    【标题】"C#与sql server超市管理系统源码(含数据库脚本,亲测通过)" 涉及的关键技术点主要包括C#编程语言、SQL Server数据库以及软件开发中的MVC(Model-View-Controller)模式。这个项目是一个实际的超市管理系统的...

    C#2.0+SQL Server2005企业人事管理系统源码

    《C#2.0+SQL Server2005企业人事管理系统源码》是基于.NET Framework 2.0和SQL Server 2005数据库技术开发的一款高效、稳定的人力资源管理解决方案。本系统旨在帮助企业更好地进行员工信息管理、考勤记录、薪酬计算...

    《信息系统开发教程——使用C#和SQL Server 2005》

    《信息系统开发教程——使用C#和SQL Server 2005》是一本深入探讨如何使用C#编程语言和Microsoft SQL Server 2005数据库管理系统进行信息系统开发的专业教材。本书旨在帮助读者掌握这两种核心技术,从而能够设计、...

    C#+SQL SERVER 实现企业人事管理系统(附源码教程).zip

    例如,你可以设计一个C#窗体应用程序,用户可以通过界面输入和编辑员工信息,这些操作会通过ADO.NET连接到SQL Server数据库,执行相应的SQL命令进行数据操作。 在课程资源中,"C#+SQL SERVER 实现企业人事管理系统...

    利用C#新建sql server 项目和CLR集成的使用

    这篇博客文章“利用C#新建sql server 项目和CLR集成的使用”将指导我们如何创建一个SQL Server项目,并利用C#的CLR功能。 首先,我们需要了解什么是SQL Server中的CLR集成。CLR集成允许开发者使用.NET Framework的...

    C# ASP.NET SQL SERVER2005 成绩管理系统网站源码

    本项目——"C# ASP.NET SQL SERVER2005 成绩管理系统网站源码",就是一个很好的学习和实践平台,适用于初学者了解和掌握这些技术的集成应用。 一、C#语言基础 C#是微软公司推出的一种面向对象的编程语言,它简洁、...

    东莞商城网上购物系统ASP.NET、SQL Server源码

    【标题】"东莞商城网上购物系统ASP.NET、SQL Server源码"所涵盖的知识点主要集中在电子商务网站开发领域,包括前端编程语言ASP.NET和后端数据库管理系统SQL Server的使用。ASP.NET是微软公司推出的Web应用程序框架,...

    SQLServer结构比对工具含源码vs2012

    这款工具含源码,适用于Visual Studio 2012开发环境,为用户提供了一个直观的方式来识别和同步数据库之间的差异。源码的提供对于学习数据库管理和软件开发的人员尤其有价值,可以深入理解比对算法和实现细节。 1. *...

    VS2010连接SQL Server 2008操作与编程

    在IT行业中,Visual Studio 2010(VS2010)是一个强大的开发环境,而SQL Server 2008则是一款广泛使用的数据库管理系统。本文将深入探讨如何使用VS2010连接到SQL Server 2008进行操作与编程,以及涉及的相关知识点。...

    C#与Sql Server 2008 R2图书信息管理系统源码详解:VS2015开发环境与.NET Framework 4.5应用,C#与Sql server 2008 R2图书信息管理系统,源码带注

    注释则详细解释了代码的功能和实现的逻辑,这对于学习C#和Sql Server 2008 R2的开发者来说,无疑是一个巨大的帮助。通过阅读源码和注释,开发者可以了解如何使用C#进行数据库编程,如何构建数据库连接,如何执行SQL...

    SQL Server数据库 asp.net交友网站

    开发者可以利用C#的类库和特性,如LINQ(Language Integrated Query)来简化与SQL Server的交互,以及使用异步编程模型来优化性能,提高用户体验。 【交友网站关键功能实现】 1. 用户注册与登录:通过asp.net的验证...

    将sqlserver数据库转换为sqlite数据库的程序(c#源码)

    2. **创建SQLite数据库连接**:使用`SQLiteConnection`和`SQLiteCommand`,创建一个指向新SQLite数据库的连接。`SQLiteConnectionStringBuilder`可以帮助构建连接字符串。 3. **转换表结构**:遍历SQL Server的元...

    ASP.NET2.0+sql server 网络应用开发详解

    《ASP.NET 2.0 + SQL Server 网络应用开发详解》这本书是针对使用ASP.NET 2.0和SQL Server进行Web应用开发的详细指南。ASP.NET是Microsoft .NET框架的一部分,它提供了一种高效、面向对象的方式来构建动态网站、web...

    管理系统c#+sql(完整项目版)

    管理系统c#+sql(完整项目版)是一个综合性的软件开发项目,使用C#编程语言和SQL Server数据库管理系统构建。这个项目涵盖了多个领域的管理功能,包括资产系统、财务管理、教务管理、库存管理、企业客户管理和网上...

    基于C#+SQLServer开发的餐饮管理系统源码.zip

    "基于C#+SQLServer开发的餐饮管理系统源码"这一标题表明这是一个使用C#编程语言和SQL Server数据库系统开发的餐饮管理软件的源代码。C#是Microsoft开发的一种面向对象的编程语言,常用于构建Windows桌面应用程序、...

    SQL Server数据库的创建

    在IT领域,数据库是存储和管理数据的核心工具,而在众多数据库管理系统中,SQL Server因其强大的功能和稳定性而备受青睐。本篇文章将详细讲解如何在SQL Server中创建数据库,以及涉及的相关技术,如XML、ASP.NET和C#...

Global site tag (gtag.js) - Google Analytics