设为首页 收藏本站
查看: 1287|回复: 0

[经验分享] xp_sendmail的正确配置与使用

[复制链接]

尚未签到

发表于 2015-11-25 13:35:39 | 显示全部楼层 |阅读模式
  今天服务器重装,发现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.在    &quot;服务    &quot;选项卡上,确认    Microsoft    Exchange    Server    和个人通讯簿是唯一可用的服务,然后单击    &quot;发送    &quot;选项卡。确认    &quot;发送到    &quot;框中选定的内容是    Exchange    Server    中的邮箱,它应该有一个类似于    &quot;邮箱    -    <友好的用户名    >    &quot;的名字(其中    <友好的用户名    >是在第一步中登录到    Windows    NT    4.0    或    Windows    2000    的用户名)。      
5.要运行带有    Exchange    Server    的    &quot;SQL    邮件    &quot;,MSSQLServer    服务必须在第一步中登录的同一个用户帐户下运行。在    &quot;控制面板    &quot;中,双击    &quot;服务    &quot;,选择    MSSQLServer    服务,然后单击    &quot;启动    &quot;。      
6.确认    &quot;SQL    邮件    &quot;的配置文件是否正确。在    SQL    Server    企业管理器中,展开服务器,展开    &quot;支持服务    &quot;文件夹,选择    &quot;SQL    邮件    &quot;,然后用右键单击。单击    &quot;属性    &quot;,然后在    &quot;常规    &quot;选项卡上,确保    &quot;配置文件名    &quot;框中指定的配置文件名正确。(事件探查器名必须与第三步中用到的配置文件名匹配。)单击    &quot;测试    &quot;,验证配置文件设置正确。      
7.如果    &quot;SQL    邮件    &quot;无法启动(例如,显示错误信息指出配置文件不正确),请检查设置确保未将    Outlook    Express    设置为默认的电子邮件客户程序。在    &quot;控制面板    &quot;中双击    &quot;Internet    &quot;选项。在    &quot;程序    &quot;选项卡中,验证    Outlook    Express    不在电子邮件组合框中。如果不得不将默认的电子邮件客户程序更改为    Outlook    Express    以外的客户程序,那么,可能需要先验证    &quot;SQL    邮件    &quot;能够用邮件配置文件启动,然后再停止并重新启动    MSSQLServer    服务。         
在有些情况下,邮件的配置文件可能会损坏而且    &quot;SQL    邮件    &quot;将无法使用它。要更正这个问题,需要把配置文件复制到另一个文件名下,或重新创建配置文件。      
8.如果用来启动    Microsoft    SQL    Server&#8482;    的帐户没有权限访问    Exchange    服务器,那么就无法使用    &quot;SQL    邮件    &quot;。执行    xp_cmdshell    来测试    SQL    Server    对    Exchange    Server    的访问权限,它执行与    &quot;SQL    邮件    &quot;相同的权限。使用下面的命令测试对服务器的连接,假定    Exchange    Server    位于名为    &quot;MyServer    &quot;的计算机上。      
   
xp_cmdshell        &quot;NET    USE    //MyServer/IPC$    &quot;      
   
如果这个命令无法正常执行,说明第三步未正确完成。      

---------------------------------------------------------------  

可以实现。  
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&#8482;  客户端  (Outlook.exe)  能够连接到  Exchange  Server  而且能够发送电子邮件。如果使用  Outlook,确保  Outlook  安装时选择了&quot;用于企业或工作组&quot;选项。  
3。确认所用的  Exchange  Server  配置文件中没有个人消息存储  (.pst)。Exchange  Server  配置文件的名字不应超过  32  个字符。  
4。在&quot;服务&quot;选项卡上,确认  Microsoft  Exchange  Server  和个人通讯簿是唯一可用的服务,然后单击&quot;发送&quot;选项卡

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143445-1-1.html 上篇帖子: CentOS 6.5 通过 PHP函数的sendmail 发送邮件 下篇帖子: 启动 sendmail 的时候出现make: warning: Clock skew detected. Your build may be incomplet
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表