xp_sendmail的正确配置与使用

今天服务器重装,发现xp_sendmail怎么都使用不了,于是上网找了如下资料

但是发现还是不能使用,我记得第一次是直接把sql server 2000装在域用户下的

于是将MSSQLSERVER的属性打开,把登录用户改为域用户重新启动服务

sql server的sql mail属性中就可以找到mail的配置文件了,好神奇的家伙,

下班收工了:)

如何为sql  server中sql  mail  设置邮箱  
1.使用    MSSQLServer    服务会用到的用户帐户登录到    Microsoft    Windows    NT®    4.0    或    Windows®    2000    上。该用户帐户必须是本地计算机的管理员和域帐户。      
2.确认    Exchange    Server    客户端    (Exchnge32.exe)    或    Microsoft    Outlook™    客户端    (Outlook.exe)    能够连接到    Exchange    Server    而且能够发送电子邮件。如果使用    Outlook,确保    Outlook    安装时选择了    "用于企业或工作组    "选项。      
3.确认所用的    Exchange    Server    配置文件中没有个人消息存储    (.pst)。Exchange    Server    配置文件的名字不应超过    32    个字符。      
4.在    "服务    "选项卡上,确认    Microsoft    Exchange    Server    和个人通讯簿是唯一可用的服务,然后单击    "发送    "选项卡。确认    "发送到    "框中选定的内容是    Exchange    Server    中的邮箱,它应该有一个类似于    "邮箱    -    <友好的用户名    >    "的名字(其中    <友好的用户名    >是在第一步中登录到    Windows    NT    4.0    或    Windows    2000    的用户名)。      
5.要运行带有    Exchange    Server    的    "SQL    邮件    ",MSSQLServer    服务必须在第一步中登录的同一个用户帐户下运行。在    "控制面板    "中,双击    "服务    ",选择    MSSQLServer    服务,然后单击    "启动    "。      
6.确认    "SQL    邮件    "的配置文件是否正确。在    SQL    Server    企业管理器中,展开服务器,展开    "支持服务    "文件夹,选择    "SQL    邮件    ",然后用右键单击。单击    "属性    ",然后在    "常规    "选项卡上,确保    "配置文件名    "框中指定的配置文件名正确。(事件探查器名必须与第三步中用到的配置文件名匹配。)单击    "测试    ",验证配置文件设置正确。      
7.如果    "SQL    邮件    "无法启动(例如,显示错误信息指出配置文件不正确),请检查设置确保未将    Outlook    Express    设置为默认的电子邮件客户程序。在    "控制面板    "中双击    "Internet    "选项。在    "程序    "选项卡中,验证    Outlook    Express    不在电子邮件组合框中。如果不得不将默认的电子邮件客户程序更改为    Outlook    Express    以外的客户程序,那么,可能需要先验证    "SQL    邮件    "能够用邮件配置文件启动,然后再停止并重新启动    MSSQLServer    服务。          
在有些情况下,邮件的配置文件可能会损坏而且    "SQL    邮件    "将无法使用它。要更正这个问题,需要把配置文件复制到另一个文件名下,或重新创建配置文件。      
8.如果用来启动    Microsoft    SQL    Server™    的帐户没有权限访问    Exchange    服务器,那么就无法使用    "SQL    邮件    "。执行    xp_cmdshell    来测试    SQL    Server    对    Exchange    Server    的访问权限,它执行与    "SQL    邮件    "相同的权限。使用下面的命令测试对服务器的连接,假定    Exchange    Server    位于名为    "MyServer    "的计算机上。      
   
xp_cmdshell        "NET    USE    \\MyServer\IPC$    "      
   
如果这个命令无法正常执行,说明第三步未正确完成。      
 
---------------------------------------------------------------  
 
可以实现。  
1.将SQL  Server与SQL  SERVER  AGENT服务的启动账户设置为当前Win2000的用户,如用户administrator在Test机器上,则用户名设置为Test\administrator;  
2.安装outlook2000以上版本,设置为“用于企业或工作组的”邮件支持,设置e-mail帐号,其中e-mail帐号密码需保存在本机;  
3.配置支持服务的SQL邮件及SQL  Server  Agent的邮件配置(在前2步操作后可能要重启计算机才能看到配置文件名);  
 
---------------------------------------------------------------  
 
配置邮件服务器的关键是SQLServer要用windows账号登录  
这个应该会吧  
然后在SQL邮件中的属性中选择一个配置文件就可以了  
如还有问题,找我好了  
---------------------------------------------------------------  
 
1、SQL  Server邮件配置:SQL  Server企业管理器->你的服务器组->服务器->支持服务->SQL邮件,单击右键属性,在出现的对话框中选择邮件配置文件名,测试就OK;  
2、SQL  Server  Agent邮件配置:SQL  Server企业管理器->你的服务器组->服务器->管理->SQL代理,在邮件配置文件中输入邮件配置文件名,这个过程应用时会提示将自动重启SQL  Server代理服务  
---------------------------------------------------------------  
 
使用SQL  Mail收发和自动处理邮件    
SQL  SERVER提供了通过EXCHANGE或OUTLOOK收发邮件的扩展存储过程,下面将这几个过程简单的介绍一下。    
 
一、启动SQL  Mail    
 
xp_startmail  @user,@password    
 
@user和@password都是可选的    
 
也可打开Enterprise  Manager中的Support  Services,在SQL  Mail上单击右键打开右键菜单,然后按Start来启动    
 
二、停止SQL  Mail    
 
xp_stopmail    
 
也可用上述方法中的菜单里的Stop来停止    
 
三、发送邮件    
 
xp_sendmail  {[@recipients  =]  'recipients  [;...n]'}    
[,[@message  =]  'message']    
[,[@query  =]  'query']    
[,[@attachments  =]  attachments]    
[,[@copy_recipients  =]  'copy_recipients  [;...n]'    
[,[@blind_copy_recipients  =]  'blind_copy_recipients  [;...n]'    
[,[@subject  =]  'subject']    
[,[@type  =]  'type']    
[,[@attach_results  =]  'attach_value']    
[,[@no_output  =]  'output_value']    
[,[@no_header  =]  'header_value']    
[,[@width  =]  width]    
[,[@separator  =]  'separator']    
[,[@echo_error  =]  'echo_value']    
[,[@set_user  =]  'user']    
[,[@dbuse  =]  'database']    
 
其中@recipients是必需的    
 
参数说明:    
 
参数  说明    
@recipients  收件人,中间用逗号分开    
@message  要发送的信息    
@query  确定执行并依附邮件的有效查询,除触发器中的插入表及删除表外,此查询能引用任何对象    
@attachments  附件    
@copy_recipients  抄送    
@blind_copy_recipients  密送    
@subject  标题    
@attach_results  指定查询结果做为附件发送    
@no_header  不发送查询结果的列名    
@set_user  查询联接的用户名,默认为Guset    
@dbuse  查询所用的数据库,默认为缺省数据库    
 
四、阅读邮件收件箱中的邮件    
 
xp_readmail  [[@msg_id  =]  'message_number']  [,  [@type  =]  'type'  [OUTPUT]]    
[,[@peek  =]  'peek']    
[,[@suppress_attach  =]  'suppress_attach']    
[,[@originator  =]  'sender'  OUTPUT]    
[,[@subject  =]  'subject'  OUTPUT]    
[,[@message  =]  'message'  OUTPUT]    
[,[@recipients  =]  'recipients  [;...n]'  OUTPUT]    
[,[@cc_list  =]  'copy_recipients  [;...n]'  OUTPUT]    
[,[@bcc_list  =]  'blind_copy_recipients  [;...n]'  OUTPUT]    
[,[@date_received  =]  'date'  OUTPUT]    
[,[@unread  =]  'unread_value'  OUTPUT]    
[,[@attachments  =]  'attachments  [;...n]'  OUTPUT])    
[,[@skip_bytes  =]  bytes_to_skip  OUTPUT]    
[,[@msg_length  =]  length_in_bytes  OUTPUT]    
[,[@originator_address  =]  'sender_address'  OUTPUT]]    
 
参数说明:    
 
参数  说明    
@originator  发件人    
@subject  主题    
@message  信息    
@recipients  收件人    
@skip_tytes  读取邮件信息时跳过的字节数,用于顺序获取邮件信息段。    
@msg_length  确定所有信息的长度,通常与@skip_bytes一起处理长信息    
 
五、顺序处理下一个邮件    
 
xp_findnextmsg  [[@msg_id  =]  'message_number'  [OUTPUT]]    
[,[@type  =]  type]    
[,[@unread_only  =]  'unread_value'])    
 
六、删除邮件    
 
xp_deletemail  {'message_number'}    
 
如果不指定邮件编号则删除收件箱中的所有邮件    
 
七、自动处理邮件    
 
sp_processmail  [[@subject  =]  'subject']    
[,[@filetype  =]  'filetype']    
[,[@separator  =]  'separator']    
[,[@set_user  =]  'user']    
[,[@dbuse  =]  'dbname']  
 
--------------------------------  
declare  
         @mail        varchar(30),  
         @msql      varchar(1000),  
         @memo          varchar(300),  
         @msubject  varchar(30)  
 
set  @mail='ygq@ebtsz.com'  
select  @msql='shsalediscount'  //执行存储过程  
 
select  @memo='以下是每天得销售损失情况'+convert(char(10),getdate(),102)  
select  @msubject='每天得销售损失'  
 
exec  @mstatus=master..xp_sendmail  @recipients=@mail,  
                                                                                   @message=@memo,  
                                                                                   @subject=@msubject,  
                                                                                   @width=800,    
                                                                                   @query=@msql  
----------------------------------------------------  
但是首先需要局域网内有Exchange  Server,虽然sqlserver上的帮助说:只要有一个遵从扩展  MAPI  的邮件服务器就行,但是我也不知道除了Exchange  Server,还有什么服务器支持MAPI,这纯粹是微软的东西!!先给你介绍一下Exchange  Server的设置方式,其他的邮件服务器是否能设置,怎么设置还是等高人来吧!  
 
1。使用  MSSQLServer  服务会用到的用户帐户登录到  Microsoft  Windows  NT&reg;  4.0  或  Windows&reg;  2000  上。该用户帐户必须是本地计算机的管理员和域帐户。  
2。确认  Exchange  Server  客户端  (Exchnge32.exe)  或  Microsoft  Outlook™  客户端  (Outlook.exe)  能够连接到  Exchange  Server  而且能够发送电子邮件。如果使用  Outlook,确保  Outlook  安装时选择了"用于企业或工作组"选项。  
3。确认所用的  Exchange  Server  配置文件中没有个人消息存储  (.pst)。Exchange  Server  配置文件的名字不应超过  32  个字符。  
4。在"服务"选项卡上,确认  Microsoft  Exchange  Server  和个人通讯簿是唯一可用的服务,然后单击"发送"选项卡

轉自:http://blog.csdn.net/qoo1983/archive/2006/11/16/1388783.aspx
自己的一點心得:
1,啟動ms sql的用戶最好是本地用戶,如administrator
2,要先啟動outlook 2003後再啟動sql,也可以停一下sql後再啟動out look後再啟動sql
3,可以執行exec startmail /exec stopmail /來啟動或停sqlmail
4,一般sqlmail問題http://support.microsoft.com/kb/315886/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值