Azure Functions SendGrid 바인딩

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

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

확장 설치

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

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

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

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

번들 설치

Functions 버전 2.x부터 HTTP 확장은 host.json 프로젝트 파일에 지정된 확장 번들의 일부입니다. 자세한 내용은 확장 번들을 참조하세요.

이 버전의 확장은 확장 번들 버전 2.x가 있는 함수 앱에서 이미 사용할 수 있어야 합니다.

예시

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

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

Important

2026년 11월 10일에 In-process 모델에 대한 지원이 종료됩니다. 모든 지원을 위해 앱을 격리된 작업자 모델로 마이그레이션하는 것이 좋습니다.

현재 격리된 작업자 프로세스에서 실행되는 함수 앱에서 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();
    }
}

특성

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

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

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

주석

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

구성

다음 표에서는 function.json 파일 및 SendGrid 특성/주석에서 사용할 수 있는 바인딩 구성 속성을 보여 줍니다.

function.json 속성 설명
type sendGrid로 설정해야 합니다.
direction out로 설정해야 합니다.
이름 요청 또는 요청 본문에 대한 함수 코드에 사용되는 변수 이름입니다. 이 값은 $return 반환 값이 하나만 있는 경우입니다.
apiKey API 키를 포함하는 앱 설정의 이름입니다. 설정하지 않으면 기본 앱 설정 이름은 AzureWebJobsSendGridApiKey입니다.
to (선택 사항) 받는 사람의 이메일 주소입니다.
보낸 사람 (선택 사항) 보낸 사람의 이메일 주소입니다.
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>"
        }
    }
}
속성 기본값 설명
보낸 사람 해당 없음 모든 함수에서 보낸 사람의 이메일 주소입니다.

다음 단계