다음을 통해 공유


Azure Functions SendGrid 바인딩

이 문서에서는 Azure Functions에서 SendGrid 바인딩을 사용하여 이메일을 보내는 방법을 설명합니다. Azure Functions는 SendGrid에 대해 출력 바인딩을 지원합니다.

Azure Functions 개발자를 위한 참조 정보입니다. Azure Functions를 새로 사용하는 경우 다음 리소스로 시작합니다.

확장 설치

설치하는 확장 NuGet 패키지는 함수 앱에서 사용 중인 C# 모드에 따라 다릅니다.

Functions는 격리된 C# 작업자 프로세스에서 실행됩니다. 자세한 내용은 격리된 작업자 프로세스에서 C# Azure Functions 실행 가이드를 참조하세요.

확장 기능의 기능은 확장 버전에 따라 다릅니다.

NuGet 패키지 버전 3.x를 설치하여 프로젝트에 확장을 추가합니다.

번들 설치

앱에서 이 바인딩 확장을 사용하려면 프로젝트 루트의 host.json 파일에 다음 extensionBundle 참조가 포함되어 있는지 확인합니다.

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

이 예제에서 값 version[4.0.0, 5.0.0) Functions 호스트가 4.x의 모든 잠재적 버전을 포함하는 최소 4.0.0 하지만 보다 5.0.0작은 번들 버전을 사용하도록 지시합니다. 이 표기법은 v4.x 확장 번들의 사용 가능한 최신 부 버전에서 앱을 효과적으로 유지 관리합니다.

가능하면 최신 확장 번들 주 버전을 사용하고 런타임에서 최신 부 버전을 자동으로 유지하도록 허용해야 합니다. 확장 번들 릴리스 페이지에서 최신 번들의 콘텐츠를 볼 수 있습니다. 자세한 내용은 Azure Functions 확장 번들을 참조하세요.

Example

다음 C# 모드 중 하나를 사용하여 C# 함수를 만들 수 있습니다.

  • 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. .NET 및 .NET Framework용 LTS(장기 지원) 및 비 LTS 버전에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다.
  • In-process 모델: Azure Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다.
  • C# 스크립트: Azure Portal에서 C# 함수를 만들 때 주로 사용됩니다.

현재 격리된 작업자 프로세스에서 실행되는 함수 앱에서 SendGrid 바인딩을 사용하는 예제가 없습니다.

다음 예제에서는 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();
    }
}

Attributes

In-Process격리된 작업자 프로세스 C# 라이브러리는 모두 특성을 사용하여 출력 바인딩을 정의합니다. C# 스크립트는 대신 function.json 구성 파일을 사용합니다.

격리된 작업자 프로세스 함수 앱에서 SendGridOutputAttribute는 다음 매개 변수를 지원합니다.

특성/주석 속성 Description
ApiKey API 키를 포함하는 앱 설정의 이름입니다. 설정하지 않으면 기본 앱 설정 이름은 AzureWebJobsSendGridApiKey입니다.
To (선택 사항) 받는 사람의 이메일 주소입니다.
From (선택 사항) 보낸 사람의 이메일 주소입니다.
Subject (선택 사항) 이메일의 제목입니다.
Text (선택 사항) 이메일 내용입니다.

Annotations

SendGridOutput 주석을 사용하면 다음 구성 값을 제공하여 SendGrid 바인딩을 선언적으로 구성할 수 있습니다.

Configuration

다음 표에서는 function.json 파일에서 사용할 수 있는 바인딩 구성 속성과 특성/주석을 SendGrid 나열합니다.

function.json 속성 Description
type sendGrid로 설정해야 합니다.
direction out로 설정해야 합니다.
name 요청 또는 요청 본문에 대한 함수 코드에 사용되는 변수 이름입니다. 이 값은 $return 반환 값이 하나만 있는 경우입니다.
apiKey API 키를 포함하는 앱 설정의 이름입니다. 설정하지 않으면 기본 앱 설정 이름은 AzureWebJobsSendGridApiKey입니다.
to (선택 사항) 받는 사람의 이메일 주소입니다.
from (선택 사항) 보낸 사람의 이메일 주소입니다.
subject (선택 사항) 이메일의 제목입니다.
text (선택 사항) 이메일 내용입니다.

선택적 속성은 바인딩에 정의된 기본값을 포함하고 프로그래밍 방식으로 추가 또는 재정의될 수 있습니다.

로컬로 개발하는 경우 컬렉션의 local.settings.json 파일에Values 애플리케이션 설정을 추가합니다.

host.json 설정

이 섹션에서는 버전 2.x 이상에서 이 바인딩에 사용할 수 있는 구성 설정을 설명합니다. host.json 파일의 설정은 함수 앱 인스턴스의 모든 함수에 적용됩니다. 함수 앱 구성 설정에 대한 자세한 내용은 Azure Functions에 대한host.json 참조를 참조하세요.

Note

Functions 1.x에서 host.json의 참조는 Azure Functions 1.x에 대한 host.json 참조를 참조하세요.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Property Default Description
from n/a 모든 함수에서 보낸 사람의 이메일 주소입니다.

다음 단계