SMTP 传递协议

更新日期: 2006 年 4 月 14 日

简单邮件传输协议 (SMTP) 传递协议创建并传送由 SMTP 服务传递的通知消息,如由 Microsoft Exchange 提供的通知消息。如果要使用 SMTP 传递协议传递特定通知类的通知,请在应用程序定义中将 SMTP 传递协议定义为该通知类的一部分。

ms172485.note(zh-cn,SQL.90).gif重要提示:
使用 SMTP 传递协议时需要 SMTP 服务,但是 SMTP 服务未与 Windows Vista 一起安装。若要在 Windows Vista 中使用 SMTP 传递协议,则必须单独安装 SMTP 服务。

定义 SMTP 传递协议

协议定义由任何自定义字段的名称和值组成。SMTP 传递协议使用下列值和字段:

  • ProtocolName 值(必需)必须为 SMTP。
  • 以下列顺序定义传递协议的下列字段:
    • Subject(必需)指定表示电子邮件中所显示的主题行的表达式。
    • From(必需)指定电子邮件中显示的发件人电子邮件地址。
    • To(必需)必须指定目标设备的地址。对于提供多播通知的通知类,此字段必须为空。
    • Priority(可选)指定电子邮件的优先级。对于 Microsoft Exchange,可用值为“低”、“正常”或“高”。如果未指定其他值,则通知优先级默认为“正常”。
    • BodyFormat(可选)可以取值为“text”或“html”,具体取决于由内容格式化程序所提供的通知数据的预期格式。如果未指定值,则通知格式默认为文本。

在 Transact-SQL 语法中,字符串常量必须用引号引起来。因此,如果在传递协议字段中使用字符串,则必须将其用单引号引起来,例如 'myString'。如果字符串为 Unicode,字符串还要以 N 开头,如 N'myString'。

SMPT 传递协议的示例定义

下列示例显示如何定义通知类的 SMTP 传递协议:

<Protocols>
    <Protocol>
        <ProtocolName>SMTP</ProtocolName>
        <Fields>
            <Field>
                <FieldName>Subject</FieldName>
                <SqlExpression>
                'The price of ' + StockSymbol
                + ' is now ' + StockPrice
                </SqlExpression>
            </Field>
            <Field>
                <FieldName>From</FieldName>
                <SqlExpression>
                N'stockquotes@microsoft.com'
                </SqlExpression>
            </Field>
            <Field>
                <FieldName>To</FieldName>
                <SqlExpression>DeviceAddress</SqlExpression>
            </Field>
            <Field>
                <FieldName>Priority</FieldName>
                <SqlExpression>N'Normal'</SqlExpression>
            </Field>
            <Field>
                <FieldName>BodyFormat</FieldName>
                <SqlExpression>N'html'</SqlExpression>
            </Field>
            <Field>
        </Fields>
        <ProtocolExecutionSettings>
            ...
        </ProtocolExecutionSettings>
    </Protocol>
</Protocols>

此示例中的所有字段都使用 Transact-SQL 表达式获取其值:

  • Subject 字段使用字符串 和 Notification 字段引用(StockSymbolStockPrice)的组合来自定义每个通知的主题行。
  • To 字段从订阅方设备的 DeviceAddress 字段获取其值。有关可用字段的列表,请参阅 SqlExpression Element for Protocol/Fields/Field (ADF)
  • 对于通过使用传递协议发送的所有通知,其 FromPriorityBodyFormat 字段都为相同的字符串。

字段也可以从通知字段直接获取其值。有关详细信息,请参阅 FieldReference Element (ADF)

定义 SMTP 传递协议的传递通道

若要使用 SMTP 传递协议分发通知,还必须定义使用 SMTP 传递协议的传递通道。来自多个应用程序的多个通知类可以使用同一个 SMTP 传递通道。

ms172485.note(zh-cn,SQL.90).gif重要提示:
由于 Microsoft .NET Framework 使用 SMTP 实现,所以只能为每个实例定义一个使用 SMTP 传递协议的传递通道。如果定义两个 SMTP 传递通道,则通知可能会传递到错误的 SMTP 服务器上。

有关详细信息,请参阅定义 SMTP 传递通道

请参阅

概念

文件传递协议
开发自定义传递协议

其他资源

配置传递协议
定义通知类
Protocol Element (ADF)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2006 年 4 月 14 日

新增内容:
  • 添加了 SMTP 服务未与 Windows Vista 一起安装的注意事项。
  • 添加了示例代码说明。