今天服务器重装,发现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® 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 和个人通讯簿是唯一可用的服务,然后单击"发送"选项卡
轉自: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/