概要本文对有关 SQL Mail 配置和功能的一些常见问题提供解答。未对如何配置 SQL Mail 和如何解决 SQL Mail 相关问题进行介绍。有关如何解决 SQL Mail 常见问题的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 315886 (http://support.microsoft.com/kb/315886/ZH-CN/) INF:常见 SQL Mail 问题
大多数 SQL Mail 相关问题都是由不正确的配置引起的。有关如何正确地配置 SQL Mail 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 263556 (http://support.microsoft.com/kb/263556/EN-US/) INF:How to Configure SQL Mail(如何配置 SQL Mail)
本文假设您对 Microsoft 知识库文章 Q263556 中所提供的背景信息具有一定的实践应用知识。
除非另外说明,否则本文中有关 SQL Mail 的说明也适用于 SQL Agent Mail。
更多信息下面的问题是 Microsoft SQL Server 支持专业人员经常被问到的有关 SQL Mail 的问题。这些问题不是按被问到的频率进行排序的,而是将类似的问题放在一起。
Q1:为什么必须在我的 SQL Server 计算机上安装邮件客户程序才能使用 SQL Mail?
A1:SQL Mail 是一个基于邮件应用程序编程接口 (MAPI) 的应用程序,该应用程序需要有 MAPI 消息传递子系统才能发送邮件。MAPI 子系统会在安装基于 MAPI 的客户程序时安装。Microsoft Windows NT 4.0 提供了一个名为 Windows Messaging 的 MAPI 客户程序;但是 Microsoft Windows 2000 未提供 MAPI 客户程序。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 238085 (http://support.microsoft.com/kb/238085/EN-US/) INFO:Windows 2000 Does Not Install MAPI 1.0 Subsystem(Windows 2000 未安装 MAPI 1.0 子系统)
为 SQL Mail 提供 MAPI 子系统最简单的方法是安装基于 MAPI 的邮件客户程序,例如 Microsoft Outlook。邮件客户程序还提供配置邮件配置文件的机制,该邮件配置文件随后可被分配到 SQL Mail。邮件配置文件向 SQL Mail 提供连接到邮件服务器以发送和接收邮件所需的信息。
Q2:可以将哪些邮件客户程序和 SQL Mail 一起使用?
A2:可以和 SQL Mail 一起使用的邮件客户程序取决于 SQL Server 和操作系统的版本。如果您正在使用 Windows NT 4.0,则可以将 Windows NT 4.0 提供的 Windows Messaging 客户程序和 SQL Server 6.5 及 SQL Server 7.0 的 SQL Mail 一起使用。Windows Messaging 客户程序只能用于 Internet 邮件服务器,不能用于 SQL Server 2000。有关 SQL Server 2000 的邮件客户程序选项的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 281293 (http://support.microsoft.com/kb/281293/EN-US/) FIX:SQL Mail 2000 Needs Microsoft Outlook 2000 Client(SQL Mail 2000 需要 Microsoft Outlook 2000 客户程序)
Microsoft Outlook 98 可以用于 SQL Server 6.5 和 SQL Server 7.0。只有当您应用了 Microsoft SQL Server 2000 Service Pack 1 之后,Outlook 98 才能用于 SQL Server 2000。Outlook 98 可以用于 Exchange 服务器或 Internet 邮件服务器。安装 Outlook 98 时必须选用用于企业或工作组选项才能和 SQL Mail 一起使用。以"仅用于 Internet Mail"(IMO) 模式安装的 MAPI 子系统是一个 Stub,它只为 Microsoft Outlook 的基本功能提供最基本的 MAPI 支持,不能和 SQL Mail 一起使用。
Microsoft Outlook 2000 可以用于 SQL Server 6.5、SQL Server 7.0 和 SQL Server 2000。Outlook 2000 可以用于 Exchange 服务器或 Internet 邮件服务器。安装 Outlook 2000 时必须选用用于企业或工作组选项才能和 SQL Mail 一起使用。以 IMO 模式安装的 MAPI 子系统是一个 Stub,它只为 Microsoft Outlook 的基本功能提供最基本的 MAPI 支持,不能和 SQL Mail 一起使用。有关 Outlook 的 IMO 选项的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 252720 (http://support.microsoft.com/kb/252720/EN-US/) INFO:MAPI and CDO Are Not Supported in Outlook IMO Mode(Outlook IMO 模式中不支持 MAPI 和 CDO)
Microsoft Office XP 中提供的 Microsoft Outlook 2002 可以用于 SQL Server 2000。对于 SQL Server 6.5 和 SQL Server 7.0,内置在 Outlook 2002 中的安全功能将导致 SQL Mail 停止响应。若要让 Outlook 2002 和 SQL Mail 一起使用,您应该具有 Exchange 服务器。Microsoft 建议不要将 Outlook 2002 和 SQL Mail 以及简单邮件传输协议 (SMTP) 或邮局协议 3 (POP3) Internet 邮件服务器一起使用。请参阅 Microsoft 知识库文章 Q263556 中"Outlook 2002 客户程序"一节,本文的"概要"一节对这一节进行了引用。
Q3:是否可以将 Outlook Express 和 SQL Mail 一起使用?
A3:因为 Outlook Express 安装简单的 MAPI 消息传递子系统并且不提供创建邮件配置文件的机制,所以不能和 SQL Mail 一起使用。
Q4:如果正在运行 Microsoft Small Business Server,那么如何创建邮件配置文件?
A4:Small Business Server 是一个特殊情况,这是因为您的 Exchange 服务器和 SQL Server 在同一台计算机上。有关如何在 Small Business Server 上使用 SQL Mail 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 304967 (http://support.microsoft.com/kb/304967/EN-US/) How to Configure SQL Server to Send Email on Small Business Server 2000(如何在 Small Business Server 2000 上配置 SQL Server 以发送电子邮件)
Q5:是否可以将 SQL Mail 和 Lotus Notes 或 Novell Groupwise 等邮件服务器一起使用?
A5:您可以将 SQL Mail 和第三方邮件服务器(如 Lotus Notes 或 Novell Groupwise)一起使用,但是,只有在将第三方邮件服务器配置为 Internet 邮件服务器时才支持此配置。
虽然可以配置 Microsoft Outlook 客户程序和第三方邮件服务器一起使用,但是不支持将这些邮件服务器提供的电子邮件客户程序和 SQL Mail 一起使用。这些电子邮件客户程序提供它们自己的 MAPI 消息传递子系统的实现,至于是否可以和 SQL Mail 一起使用,尚未经过测试。
Q6:如果 SQL Mail 不接收邮件,是否需要 POP3 服务器?
A6:除非您设置的 SQL Mail 具有 Exchange 服务器用于接收电子邮件,否则即使不在服务器上接收邮件,也必须具有工作的 POP3 服务器。其原因是 Microsoft Outlook 将先检查 POP3 接收邮件服务器,然后再发送外发电子邮件。如果没有有效的 POP3 接收邮件服务器,则可能延迟或根本不发送外发邮件,或者 SQL Mail 可能停止响应(挂起)。
Q7:是否可以将 Yahoo! 或 Hotmail 帐户用作 POP3 服务器?
A7:不能将基于 Web 的邮件服务(例如 Yahoo!Mail 和 Hotmail)用作 POP3 服务器。将这些服务用于商业目的还可能违反它们的"服务使用"协议。
最好也不要使用 Internet 服务提供商 (ISP)(例如 MSN)提供的 POP3 帐户。如果 SQL Mail 由于任何原因未能连接到 POP3 服务器,则 SQL Mail 将停止响应,于是您必须停止,然后重新启动 SQL Server 才能再次发送邮件。不在您控制之下的邮件服务器可能在任何时候关闭以进行维护,或者出现 Internet 上速度减慢的情况,这些都可能导致它们无法访问。
一个较好的解决方案是在您的 SQL Server 计算机上安装 POP3 服务器并使用邮件帐户对其进行配置,这样您便具有了一个本地 POP3 服务器和有保障的连接。POP3 和 SMTP 协议是公共域,您可以通过 Internet 以低廉的成本或免费获得支持这些协议的邮件服务器用于安装。Microsoft 不担保任何一种特定的 Internet 邮件服务器优于其他邮件服务器,也不对 Internet 邮件服务器的安装或管理提供支持。
Q8:如果不想在我的 SQL Server 计算机上安装 Microsoft Outlook,那么如何使用 SQL Mail?
A8:如果您正在运行 Windows NT 4.0,则可能可以使用 Windows Messaging,具体情况取决于您的 SQL Server 的版本。请参阅上面有关邮件客户程序是否可用于 SQL Mail 的问题来了解有关 Windows Messaging 客户程序的限制。
如果您正在运行 Windows 2000,则必须在您的 SQL Server 计算机上安装 Microsoft Outlook 客户程序。
您还可以通过 Transact-SQL 批处理程序发送邮件,而不使用 SQL Mail,方法是使用 CDO for NT Server (CDONTS) 或 CDO for Windows 2000 (CDOSYS) 以及 SQL Server OLE 自动存储过程。有关如何使用 CDO 创建邮件过程的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 312839 (http://support.microsoft.com/kb/312839/EN-US/) HOW TO:Send E-Mail from SQL Server Without Using SQL Mail(从 SQL Server 发送电子邮件而不使用 SQL Mail)
Q9:如果具有 Microsoft Exchange,是否仍需要使用 Outlook?
A9:Outlook 提供的客户端 MAPI 并不总是适合服务器端应用程序(如 SQL Server)。Exchange Server 附带的服务器端 MAPI 比 Outlook 附带的客户端 MAPI 更合适。但是,安装 Exchange MAPI 不会为您提供创建邮件配置文件的功能,而邮件配置文件是 SQL Mail 所必需的。如果您愿意使用 Exchange 服务器端 MAPI,这里提供一些方法可用来创建邮件配置文件。有关如何通过 Exchange 服务器端 MAPI 创建邮件配置文件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 306962 (http://support.microsoft.com/kb/306962/EN-US/) HOWTO:Create MAPI Profiles Without Installing Outlook(在未安装 Outlook 的情况下创建 MAPI 配置文件)
若要安装服务器端 MAPI,您不需要在 SQL Server 计算机上安装 Exchange Server。只要安装 Microsoft Exchange Administrator 就可以了。您还必须添加 Exchange 服务以创建配置文件。有关如何添加 Exchange 服务的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 294470 (http://support.microsoft.com/kb/294470/EN-US/) HOWTO:Add Entries For Exchange Services to Mapisvc.inf(将 Exchange 服务的条目添加到 Mapisvc.inf)
Q10:是否可以使用 SQL Mail 发送 HTML 邮件?
A10:由于 MAPI 限制,对于当前版本的 SQL Server,您不能使用 SQL Mail 发送 HTML 格式的邮件。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 268440 (http://support.microsoft.com/kb/268440/EN-US/) INFO:MAPI Is Not Suitable for HTML Messages(MAPI 不适用于 HTML 邮件)
如果要发送 HTML 格式的邮件,您可能需要考虑编写使用协作数据对象 (CDO) 的存储过程来发送邮件。有关使用 CDO 创建邮件过程的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 312839 (http://support.microsoft.com/kb/312839/EN-US/) How to Send Mail from SQL Server without using SQL Mail(如何从 SQL Server 发送邮件而不使用 SQL Mail)
Q11:为什么在 SQL Server 2000 中没有启动 SQL Mail 的选项?
A11:在 SQL Server 2000 中没有手动启动 SQL Mail 或在启动 SQL Server 时自动启动 SQL Mail 的选项。SQL Mail 在您第一次发送 SQL Mail 邮件时自动启动。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 293443 (http://support.microsoft.com/kb/293443/EN-US/) INF:The Autostart SQL Mail Option Does Not Appear in the SQL Enterprise Manager(自动启动 SQL Mail 选项不显示在 SQL 企业管理器中)
使用 xp_startmail 和 xp_stopmail 扩展存储过程启动和停止 SQL Mail 可能导致内存泄漏,除非您应用了 SQL Server 2000 Service Pack 2,否则 Microsoft 不建议您使用这些存储过程。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 300414 (http://support.microsoft.com/kb/300414/EN-US/) FIX:SQL Mail Operations May Lead to Failures and Memory Leaks(SQL Mail 操作可能导致故障和内存泄漏)
Q12:为什么需要使用域帐户来启动 SQL Server?
A12:只有当您使用 Exchange Server 时才需要使用域帐户启动 SQL Server。SQL Mail 应该能够通过使用 Windows 身份验证连接到 Exchange Server 以避免被提示输入用户凭据。域帐户既能登录到本地 SQL Server 服务器又能登录到远程 Exchange Server 计算机,因此是完成此任务的最佳方法。
如果您正在使用 Internet 邮件服务器,则必须在配置邮件配置文件时提供 POP3 服务器的帐户名和密码。因为这是登录到 POP3 服务器所需进行的唯一身份验证,所以不需要从域帐户启动 SQL Server 服务。SMTP 服务器通常不需要帐户和密码。
如果计划使用 SQL Mail,则不应该从本地系统帐户启动 SQL Server,这是因为您无法将邮件配置文件和本地系统帐户进行关联。
Q13:是否可以对 SQL Mail 和 SQL Agent Mail 使用相同的配置文件?
A13:邮件配置文件与特定的 Windows 登录帐户关联。如果您在配置文件中配置 Internet 邮件服务,则将在默认位置创建个人存储文件 (.pst) 以存储从 POP3 服务器下载的邮件。此 .pst 文件供使用此邮件配置文件的所有服务使用,如果 SQL Mail 和 SQL Agent Mail 同时使用相同的邮件配置文件,则将导致冲突。
如果使用 Exchange 服务配置邮件配置文件,则通常不使用 .pst 文件,因为 Exchange 邮件将保留在 Exchange 服务器上。在这种情况下,您可以将相同的邮件配置文件用于 SQL Mail 和 SQL Agent Mail。但是,如果您创建了 .pst 文件,则在任何时刻只有使用邮件配置文件的那个服务可以访问 .pst 文件。如果您在邮件配置文件中使用 .pst 文件,则将需要对 SQL Mail 和 SQL Agent Mail 使用不同的邮件配置文件。有关更多详细信息,请参阅 q313969(在文章中插入链接)。
备注:如果指定 .pst 文件的位置,则不要使用网络共享。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 297019 (http://support.microsoft.com/kb/297019/EN-US/) OL2000:Why .pst Files Are Not Recommended Over a LAN or WAN Link(为什么不建议在 LAN 或 WAN 链接上使用 .pst 文件)
如果使用不同的服务帐户启动 SQL Server 和 SQL Agent 服务,则必须为每个帐户配置邮件配置文件。若要为服务帐户配置邮件配置文件,您必须使用该服务帐户登录到服务器。
Q14:如果 Exchange 服务器和 SQL Server 服务器分别在两个域中并且这两个域之间没有信任,那么我需要使用什么帐户?
A14:如果不被提示输入登录凭据就无法从 SQL Server 计算机上的 Outlook 客户程序向 Exchange 服务器发送邮件,则 SQL Mail 将不工作。当提示输入用户凭据的对话框显示在虚拟桌面上时,任何发送邮件的尝试都将导致 SQL Mail 停止响应。
若要解决此问题,请将 Exchange 服务器当做 Internet 邮件服务器对待。您可以在配置邮件配置文件时传递登录帐户和密码信息,以便当连接到其他域中的 Exchange 服务器时不提示 SQL Mail 输入登录信息。
如果 SQL Server 服务器和 Exchange 服务器被防火墙分开,您也可以使用此方法。
Q15:是否可以将 SQL Mail 用于 Microsoft 桌面引擎 (MSDE)?
A15:MSDE 上不支持 SQL Mail。您必须升级到 SQL Server 的非 MSDE 版本才能使用 SQL Mail。
其他资源有关解决 SQL Mail 问题的其他信息,请参阅以下 Microsoft Web 站点: 支持网络发布:Microsoft SQL Mail 疑难解答
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com/servicedesks/webcasts/wc091301/wcblurb091301.asp (http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com/servicedesks/webcasts/wc091301/wcblurb091301.asp)
如果您未找到具体问题的解答,请访问 Microsoft SQL Server 新闻组,位于:Microsoft SQL Server 新闻组 (http://support.microsoft.com/newsgroups/)。
如果您对此文章或其他 Microsoft 知识库文章有任何评论,请给我们发个条子,地址是 SQLKB@Microsoft.com (mailto:sqlkb@microsoft.com)。
这篇文章中的信息适用于:%26#8226;
Microsoft SQL Server 2000 标准版
%26#8226;
Microsoft SQL Server 6.5 标准版
%26#8226;
Microsoft SQL Server 7.0 标准版
,