Azure Functions SendGrid 绑定
本文介绍如何使用 Azure Functions 中的 SendGrid 绑定发送电子邮件。 Azure Functions 支持 SendGrid 的输出绑定。
此参考信息面向 Azure Functions 开发人员。 Azure Functions 的新手请从以下资源入手:
安装扩展
你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:
函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南。
扩展的功能因扩展版本而异:
通过安装 NuGet 包 3.x 版将扩展添加到项目。
安装捆绑包
从 Functions 版本 2.x 开始,HTTP 扩展是扩展包的一部分,在 host.json 项目文件中指定。 若要了解详细信息,请参阅扩展捆绑包。
此版本的扩展应该已可以通过扩展包版本 2.x 提供给函数应用。
示例
可使用以下 C# 模式之一来创建 C# 函数:
- 进程内类库:编译的 C# 函数,该函数在与 Functions 运行时相同的进程中运行。
- 独立工作进程类库:编译的 C# 函数,该函数在独立于运行时的工作进程中运行。 需要独立工作进程才能支持在 LTS 和非 LTS 版 .NET 和 .NET Framework 上运行的 C# 函数。
- C# 脚本:主要在 Azure 门户中创建 C# 函数时使用。
重要
对进程内模型的支持将于 2026 年 11 月 10 日结束。 为获得完全支持,强烈建议将应用迁移到独立工作模型。
以下示例演示 function.json 文件中的一个 SendGrid 输出绑定以及使用该绑定的 JavaScript 函数。
下面是 function.json 文件中的绑定数据:
{
"bindings": [
{
"name": "$return",
"type": "sendGrid",
"direction": "out",
"apiKey" : "MySendGridKey",
"to": "{ToEmail}",
"from": "{FromEmail}",
"subject": "SendGrid output bindings"
}
]
}
配置部分解释了这些属性。
JavaScript 代码如下所示:
module.exports = function (context, input) {
var message = {
"personalizations": [ { "to": [ { "email": "sample@sample.com" } ] } ],
from: { email: "sender@contoso.com" },
subject: "Azure news",
content: [{
type: 'text/plain',
value: input
}]
};
return message;
};
完整的 PowerShell 示例当前不可用于 SendGrid 绑定。
下面的示例演示了一个使用 SendGrid 绑定发送电子邮件的 HTTP 触发的函数。 可以在绑定配置中提供默认值。 例如,“发件人”电子邮件地址在“function.json”中配置。
{
"scriptFile": "__init__.py",
"bindings": [
{
"type": "httpTrigger",
"authLevel": "function",
"direction": "in",
"name": "req",
"methods": ["get", "post"]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "sendGrid",
"name": "sendGridMessage",
"direction": "out",
"apiKey": "SendGrid_API_Key",
"from": "sender@contoso.com"
}
]
}
以下函数说明了如何为可选属性提供自定义值。
import logging
import json
import azure.functions as func
def main(req: func.HttpRequest, sendGridMessage: func.Out[str]) -> func.HttpResponse:
value = "Sent from Azure Functions"
message = {
"personalizations": [ {
"to": [{
"email": "user@contoso.com"
}]}],
"subject": "Azure Functions email with SendGrid",
"content": [{
"type": "text/plain",
"value": value }]}
sendGridMessage.set(json.dumps(message))
return func.HttpResponse(f"Sent")
以下示例使用 Java 函数运行时库中的 @SendGridOutput
注释来发送使用 SendGrid 输出绑定的电子邮件。
package com.function;
import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
public class HttpTriggerSendGrid {
@FunctionName("HttpTriggerSendGrid")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = { HttpMethod.GET, HttpMethod.POST },
authLevel = AuthorizationLevel.FUNCTION)
HttpRequestMessage<Optional<String>> request,
@SendGridOutput(
name = "message",
dataType = "String",
apiKey = "SendGrid_API_Key",
to = "user@contoso.com",
from = "sender@contoso.com",
subject = "Azure Functions email with SendGrid",
text = "Sent from Azure Functions")
OutputBinding<String> message,
final ExecutionContext context) {
final String toAddress = "user@contoso.com";
final String value = "Sent from Azure Functions";
StringBuilder builder = new StringBuilder()
.append("{")
.append("\"personalizations\": [{ \"to\": [{ \"email\": \"%s\"}]}],")
.append("\"content\": [{\"type\": \"text/plain\", \"value\": \"%s\"}]")
.append("}");
final String body = String.format(builder.toString(), toAddress, value);
message.setValue(body);
return request.createResponseBuilder(HttpStatus.OK).body("Sent").build();
}
}
特性
配置
下表列出了在 function.json 文件和 SendGrid
特性/注释中可用的绑定配置属性。
“function.json”属性 | 说明 |
---|---|
type | 必须设置为 sendGrid 。 |
direction | 必须设置为 out 。 |
name | 在请求或请求正文的函数代码中使用的变量名称。 只有一个返回值时,此值为 $return 。 |
apiKey | 包含 API 密钥的应用设置的名称。 如果未设置,默认应用设置名称为“AzureWebJobsSendGridApiKey”。 |
to | (可选)收件人的电子邮件地址。 |
from | (可选)发件人的电子邮件地址。 |
subject | (可选)电子邮件的主题。 |
text | (可选)电子邮件内容。 |
在绑定中可能会定义可选属性的默认值,并以编程方式添加或重写这些值。
在本地开发时,需要将应用程序设置添加到 Values
集合中的 local.settings.json 文件中。
host.json 设置
本部分介绍版本 2.x 及更高版本中可用于此绑定的配置设置。 host.json 文件中的设置将应用于函数应用实例中的所有函数。 下面的示例 host.json 文件仅包含此绑定的 2.x 版及更高版本设置。 若要详细了解版本 2.x 及更高版本中的函数应用程序配置设置,请参阅 Azure Functions 的 host.json 参考。
注意
有关 Functions 1.x 中 host.json 的参考,请参阅 Azure Functions 1.x 的 host.json 参考。
{
"version": "2.0",
"extensions": {
"sendGrid": {
"from": "Azure Functions <samples@functions.com>"
}
}
}
属性 | 默认 | 说明 |
---|---|---|
from | n/a | 所有函数的发件人电子邮件地址。 |