jialiguo 发表于 2015-11-25 13:35:39

xp_sendmail的正确配置与使用

  今天服务器重装,发现xp_sendmail怎么都使用不了,于是上网找了如下资料
  但是发现还是不能使用,我记得第一次是直接把sql server 2000装在域用户下的
  于是将MSSQLSERVER的属性打开,把登录用户改为域用户重新启动服务
  sql server的sql mail属性中就可以找到mail的配置文件了,好神奇的家伙,
  下班收工了:)
  如何为sqlserver中sqlmail设置邮箱
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™    的帐户没有权限访问    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.将SQLServer与SQLSERVERAGENT服务的启动账户设置为当前Win2000的用户,如用户administrator在Test机器上,则用户名设置为Test/administrator;
2.安装outlook2000以上版本,设置为“用于企业或工作组的”邮件支持,设置e-mail帐号,其中e-mail帐号密码需保存在本机;
3.配置支持服务的SQL邮件及SQLServerAgent的邮件配置(在前2步操作后可能要重启计算机才能看到配置文件名);

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

配置邮件服务器的关键是SQLServer要用windows账号登录
这个应该会吧
然后在SQL邮件中的属性中选择一个配置文件就可以了
如还有问题,找我好了
---------------------------------------------------------------

1、SQLServer邮件配置:SQLServer企业管理器->你的服务器组->服务器->支持服务->SQL邮件,单击右键属性,在出现的对话框中选择邮件配置文件名,测试就OK;
2、SQLServerAgent邮件配置:SQLServer企业管理器->你的服务器组->服务器->管理->SQL代理,在邮件配置文件中输入邮件配置文件名,这个过程应用时会提示将自动重启SQLServer代理服务
---------------------------------------------------------------

使用SQLMail收发和自动处理邮件   
SQLSERVER提供了通过EXCHANGE或OUTLOOK收发邮件的扩展存储过程,下面将这几个过程简单的介绍一下。   

一、启动SQLMail   

xp_startmail@user,@password   

@user和@password都是可选的   

也可打开EnterpriseManager中的SupportServices,在SQLMail上单击右键打开右键菜单,然后按Start来启动   

二、停止SQLMail   

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']   
[,[@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_skipOUTPUT]   
[,[@msg_length=]length_in_bytesOUTPUT]   
[,[@originator_address=]'sender_address'OUTPUT]]   

参数说明:   

参数说明   
@originator发件人   
@subject主题   
@message信息   
@recipients收件人   
@skip_tytes读取邮件信息时跳过的字节数,用于顺序获取邮件信息段。   
@msg_length确定所有信息的长度,通常与@skip_bytes一起处理长信息   

五、顺序处理下一个邮件   

xp_findnextmsg[[@msg_id=]'message_number']   
[,[@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),
         @msubjectvarchar(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
----------------------------------------------------
但是首先需要局域网内有ExchangeServer,虽然sqlserver上的帮助说:只要有一个遵从扩展MAPI的邮件服务器就行,但是我也不知道除了ExchangeServer,还有什么服务器支持MAPI,这纯粹是微软的东西!!先给你介绍一下ExchangeServer的设置方式,其他的邮件服务器是否能设置,怎么设置还是等高人来吧!

1。使用MSSQLServer服务会用到的用户帐户登录到MicrosoftWindowsNT&reg;4.0或Windows&reg;2000上。该用户帐户必须是本地计算机的管理员和域帐户。
2。确认ExchangeServer客户端(Exchnge32.exe)或MicrosoftOutlook™客户端(Outlook.exe)能够连接到ExchangeServer而且能够发送电子邮件。如果使用Outlook,确保Outlook安装时选择了&quot;用于企业或工作组&quot;选项。
3。确认所用的ExchangeServer配置文件中没有个人消息存储(.pst)。ExchangeServer配置文件的名字不应超过32个字符。
4。在&quot;服务&quot;选项卡上,确认MicrosoftExchangeServer和个人通讯簿是唯一可用的服务,然后单击&quot;发送&quot;选项卡
页: [1]
查看完整版本: xp_sendmail的正确配置与使用