下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、这两天都在搞这个东西, 从开始的一点不懂, 到现在自己可以独立的完成这个功能! 在 这个过程中, CSDN 的好多牛人都给了我很大的帮助, 在此表示十二分的感谢! 写这篇文章, 一是为了巩固一下, 二嘛我也很希望我写的这点小东西能帮助遇到同样问题的朋友们! 当然 这里有一部分是从网上的摘录的实现一个类似于注册平台的功能: 比如注册了一个用户, 就会向注册邮箱里发送一封邮 件。首先是要搭建一个自动发送邮件的平台,这个用sql server 2008( sql server 2005 也有)的 database mail 就能很方便的实现。 这个完成了以后就能够发送简单的邮件了, 但是这样在 应用
2、中往往是不够,我们还要需要建一个 job 来实现自动发送的功能。database mail 的构建有两种方法,一是用 configure database mail,另外一种是用 sql 语 句完成。这两种方法中的服务器名字,我刚开始以为是随便起一个就可以的, (以为 sql server 的 database mail 会自动把这个服务器名申请为一个可用的 smtp 服务器)后来貌似不是的。 这里好像必须要是一个存在并且可用的 smtp 服务器名如果想要删除建立好的 profile 和 account 可以用如下语句代码如下 :DECLAREaccount_name sysname,prof
3、ile_name sysname;SELECTaccount_name = Nwant_to_delete_Accountprofile_name = Nwant_to_delete_Profile;- 从邮件配置文件中删除数据库邮件帐号EXEC msdb.dbo.sysmail_delete_profileaccount_spprofile_name = profile_name,account_name = account_name;- 删除数据库邮件帐号EXEC msdb.dbo.sysmail_delete_account_spaccount_name = account_name;-
4、 删除数据库邮件配置文件EXEC msdb.dbo.sysmail_delete_profile_spprofile_name = profile_name;完成了 database mail的搭建。下面我们就要开始完善自动发送邮件的功能。 我们要实现发送邮件的格式是:尊敬的: titleName感谢您的注册,你的用户名是,密码是 object你的满意是我们最大的动力。 Conclusion某某公司 Inscribe首先我们可以建两个表:一个是 AutoSendEmail 记录用户 ID 和 Email 的信息;一个是 EmailText ,一个 static table ,里面存储的是我们要
5、发送的邮件的格式。AutoSendEmail 的主要字段有 UserID , EmailAddress , EmailTextID ( EmailText 的一个 外键)。这里的 UserID 对应的是一个 User 表,里面存有用户的登录名及登录密码。EmailText 的主要字段有 EmailTextID ,Subject (主题), titleName (称呼), object(内 容),Conclusion (结束语), Inscribe(落款)。可能看到这里,有人会认为 EmailText 表没必 要设计的这么麻烦。有 EmailTextID , Subject 和一个 body 就
6、够了,确实,但是这样的话, 内容中的排版格式比较麻烦。 这样设计一是为了格式方便, 一个是为了和发送其他邮件格式 统一。插入一行数据到 EmailText 表中insert into EmailText (EmailTextID,Subject,TitleName,Object,Conclusion,Inscribe) values(1, 注册成功 ,尊敬的 <UserName>:,感 谢 您 申 请 注 册 某 某 公 司 会 员 ! 你 的 注 册 帐 号 为 <LoginName> , 密 码 为 <Password> ,请妥善保管您的密码! ,感谢您
7、对我们公司的支持!如果任何意见或建议,欢迎来电咨询 :123-456789 。请不要 回复此邮件! , 某某公司 )这样,用 job 每次遍历 AutoSendEmail ,从中得到 UserID 和 EmailTextID ,然后根据 UserID 可以得到相应的登录名和登录密码。同时根据 EmailTextID ,取出里面的 titleName (称呼), object(内容), Conclusion (结束语) , Inscribe (落款)四个字段,用得到的登录名和登录 密码去替换 <UserName> ,<LoginName>,<Password>
8、 这样就可以拼凑成一封 邮件的完整 body 。为此,先建立一个 procedure代码如下 :CREATE PROCEDURE Services.SendRegisteredEmail(UserID int,EmailAddress nvarchar(100)- mailitem_id int OUTPUT)ASdeclare userName nvarchar(30)declare Login nvarchar(50)declare password nvarchar(50)declare regUserID intdeclare titleName nvarchar(100)declar
9、e titleResult nvarchar(100)declare object nvarchar(600)declare objectResult nvarchar(600)declare Subject1 nvarchar(100)declare Conclusion nvarchar(600)declare Inscrible nvarchar(100)declare result int-declare time datetimedeclare body1 nvarchar(max)beginselect userName=LastName from Users.User where
10、 UserID=UserIDselect Subject1=Subject,titleName=TitleName ,object=Object,Conclusion=Conclusion,Inscri ble=Inscribe from Services.EmailText where EmailTypeID=1select titleResult=replace(titleName,<UserName>,userName)select Login=Login ,password=Password from Users.RegisteredUser where UserID=Us
11、erIDselect objectResult=replace(object,<LoginName>,Login)select objectResult=replace(objectResult,<LoginName>,Login)set body1=titleResult+N<br>+objectResult+N<br>+Conclusion+N<br> +InscribleEXEC result=msdb.dbo.sp_send_dbmail profile_name=SurmountGroupProfile, recipient
12、s=EmailAddress,subject= Subject1,body = body1, body_format = HTML;return resultend上面代码用了一个 sql 里的替换函数 replace,该函数的用法是 用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。 语法 REPLACE ( string_expression1 , string_expression2 , string_expression3 ) 参数 string_expression1 待搜索的字符串表达式。 string_expression1 可以是字符数据或 二进制数据。s
13、tring_expression2 待查找的字符串表达式。 string_expression2 可以是字符数据或二进 制数据。string_expression3 替换用的字符串表达式。 string_expression3 可以是字符数据或二进 制数据。返回类型如果 string_expression ( 1、 2 或 3)是支持的字符数据类型之一,则返回字符数据。 如果 string_expression( 1、2 或 3)是支持的 binary 数据类型之一,则返回二进制数据。msdb.dbo.sp_send_dbmail 存储过程是用于执行发送邮件的,返回值为0 或是 1。 0 代表
14、发送成功, 1 为发送失败邮件的格式是用 HTML 形式显示有了这个存储过程,那么只要用个建个 job 就可以了。 job 主要是为了实现某些需要数 据库自动处理的功能。job 里的 command 输入如下代码:代码如下 :declare recordID intdeclare userID intdeclare email nvarchar(100)declare typeID intdeclare result intdeclare EmailCursor cursor for select RecordID,UserID,EmailAddress,EmailTextID from AutoSendEmailopen EmailCursorfetch next from EmailCursor into recordID,userID,email,typeIDWhile ( Fetch_Status=0 )beginif( typeID=1)beginexec result=SendRegisteredEmail userID,email if(result=0)begindelete from Services.AutoSendEmail where RecordI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京航空航天大学《多轴系统动力学与控制》2021-2022学年期末试卷
- 南京工业大学浦江学院《税法》2023-2024学年第一学期期末试卷
- 方帽子店说课稿
- 《夜书所见》说课稿
- 南京工业大学浦江学院《操作系统》2021-2022学年期末试卷
- 简单的木材合同(2篇)
- 南京工业大学《移动通信与5G技术》2022-2023学年第一学期期末试卷
- 南京工业大学《土木工程图学及BIM》2023-2024学年第一学期期末试卷
- 新型病虫害防治技术的实施方案
- 实验探究加速度与力质量的关系教案
- 电力工程施工售后保障方案
- 2024年小学心理咨询室管理制度(五篇)
- 第16讲 国家出路的探索与挽救民族危亡的斗争 课件高三统编版(2019)必修中外历史纲要上一轮复习
- 机器学习 课件 第10、11章 人工神经网络、强化学习
- 北京市人民大学附属中学2025届高二生物第一学期期末学业水平测试试题含解析
- 书籍小兵张嘎课件
- 2024秋期国家开放大学专科《机械制图》一平台在线形考(形成性任务四)试题及答案
- 2024年黑龙江哈尔滨市通河县所属事业单位招聘74人(第二批)易考易错模拟试题(共500题)试卷后附参考答案
- 私募基金管理人-廉洁从业管理准则
- 房地产估价机构内部管理制度
- 广西科普传播中心招考高频难、易错点500题模拟试题附带答案详解
评论
0/150
提交评论