xp_deletemail (Transact-SQL)

删除 Microsoft SQL Server 收件箱中的邮件。sp_processmail 使用此过程来处理 SQL Server 收件箱中的邮件。

注意注意

后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

主题链接图标Transact-SQL 语法约定

语法

xp_deletemail { 'message_id' }

参数

  • 'message_id'
    收件箱中应删除的邮件的专有邮件号(由 xp_findnextmsg 分配)。message_id 的数据类型为 varchar(255),无默认值。

返回代码值

0(成功)或 1(失败)

结果集

当所传递的邮件 ID 有效时,xp_deletemail 将返回一封邮件。

注释

除了无效参数以外,所有错误都将记录到 Windows 应用程序日志中。

xp_deletemail 删除收件箱中的邮件,但不会删除文件系统中的任何附件。您必须手动删除附件。可以通过将 xp_readmail 的 suppress_attach 参数设置为 TRUE 来取消生成附件。有关附件安全问题的详细信息,请参阅 xp_readmail (Transact-SQL)

xp_deletemail 不记录所删除的邮件或删除这些邮件的用户。在多个用户都具有执行 xp_deletemail 的权限的环境中,这可能会导致审核问题。为了尽量减少此问题,请将 xp_deletemail 的权限限于 sysadmin 固定服务器角色的成员。

权限

要求具有 sysadmin 固定服务器角色的成员身份,但也可以将 EXECUTE 权限授予其他用户。不过,出于安全考虑,建议将此存储过程的权限仅授予 sysadmin 固定服务器角色的成员。

示例

以下示例检索 xp_findnextmsg 提供的邮件 ID,然后使用此邮件 ID 删除邮件。xp_findnextmsg 返回的值将放入局部变量 @message_id 中。

DECLARE @message_id varchar(255) ;

USE master ;

EXEC xp_findnextmsg @msg_id = @message_id OUTPUT ;

EXEC xp_deletemail @message_id ;