Azure Functions SendGrid 바인딩

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

이는 Azure Functions 개발자에 대한 참조 정보입니다. Azure Functions를 처음 접하는 경우 다음 리소스부터 시작합니다.

패키지 - Functions 1.x

SendGrid 바인딩은 Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet 패키지 버전 2.x에서 제공됩니다. 이 패키지에 대한 소스 코드는 azure-webjobs-sdk-extensions GitHub 리포지토리에 있습니다.

다음 표에서는 각 개발 환경에서 이 바인딩에 대한 지원을 추가하는 방법을 보여줍니다.

개발 환경 다음에서 지원을 추가하려면
Functions 1.x
로컬 개발 - C# 클래스 라이브러리 패키지 설치
로컬 개발 - C# 스크립트, JavaScript, F # 자동
포털 개발 자동

패키지 - Functions 2.x 이상

SendGrid 바인딩은 Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet 패키지 버전 3.x에서 제공됩니다. 이 패키지에 대한 소스 코드는 azure-webjobs-sdk-extensions GitHub 리포지토리에 있습니다.

다음 방법을 사용하여 선호하는 개발 환경에 지원을 추가합니다.

개발 환경 애플리케이션 종류 지원을 추가하려면 다음을 수행합니다.
Visual Studio C# 클래스 라이브러리 NuGet 패키지 설치
Visual Studio Code 핵심 도구 기반 확장 번들 등록

Azure Tools 확장을 설치하는 것이 좋습니다.
다른 모든 편집기/IDE 핵심 도구 기반 확장 번들 등록
Azure Portal 포털에서만 온라인 사용 바인딩 추가 시 설치

함수 앱을 다시 게시하지 않고 기존 바인딩 확장을 업데이트하려면 확장 업데이트를 참조하세요.

예제

다음 예제에서는 Service Bus 큐 트리거와 SendGrid 출력 바인딩을 사용하는 C# 함수를 보여줍니다.

동기

using SendGrid.Helpers.Mail;
using System.Text.Json;

...

[FunctionName("SendEmail")]
public static void Run(
    [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message email,
    [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] out SendGridMessage message)
{
var emailObject = JsonSerializer.Deserialize<OutgoingEmail>(Encoding.UTF8.GetString(email.Body));

message = new SendGridMessage();
message.AddTo(emailObject.To);
message.AddContent("text/html", emailObject.Body);
message.SetFrom(new EmailAddress(emailObject.From));
message.SetSubject(emailObject.Subject);
}

public class OutgoingEmail
{
    public string To { get; set; }
    public string From { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
}

비동기

using SendGrid.Helpers.Mail;
using System.Text.Json;

...

[FunctionName("SendEmail")]
public static async Task Run(
 [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message email,
 [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] IAsyncCollector<SendGridMessage> messageCollector)
{
 var emailObject = JsonSerializer.Deserialize<OutgoingEmail>(Encoding.UTF8.GetString(email.Body));

 var message = new SendGridMessage();
 message.AddTo(emailObject.To);
 message.AddContent("text/html", emailObject.Body);
 message.SetFrom(new EmailAddress(emailObject.From));
 message.SetSubject(emailObject.Subject);
 
 await messageCollector.AddAsync(message);
}

public class OutgoingEmail
{
 public string To { get; set; }
 public string From { get; set; }
 public string Subject { get; set; }
 public string Body { get; set; }
}

"AzureWebJobsSendGridApiKey"라는 앱 설정에 API 키가 있는 경우 특성의 ApiKey 속성 설정을 생략할 수 있습니다.

특성 및 주석

C# 클래스 라이브러리에서 SendGrid 특성을 사용합니다.

구성할 수 있는 특성 속성에 대한 자세한 내용은 구성을 참조하세요. 다음은 메서드 서명의 SendGrid 특성 예제입니다.

[FunctionName("SendEmail")]
public static void Run(
    [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] OutgoingEmail email,
    [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] out SendGridMessage message)
{
    ...
}

전체 예제는 C# 예제를 참조하세요.

구성

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

function.json 속성 특성/주석 속성 설명 선택
type 해당 없음 sendGrid로 설정해야 합니다.
direction 해당 없음 out로 설정해야 합니다.
name 해당 없음 요청 또는 요청 본문의 함수 코드에 사용되는 변수 이름입니다. 반환 값이 하나만 있는 경우 이 값은 $return입니다.
apiKey ApiKey API 키가 포함 된 앱 설정의 이름입니다. 설정되지 않은 경우 기본 앱 설정 이름은 AzureWebJobsSendGridApiKey입니다.
to 작업 받는 사람의 이메일 주소입니다.
원본 시작 보낸 사람의 전자 메일 주소입니다.
subject 제목 전자 메일의 제목입니다.
text 텍스트 메일 내용입니다.

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

로컬로 개발하는 경우 앱 설정은 local.settings.json 파일로 이동합니다.

host.json 설정

이 섹션에서는 버전 2.x 이상에서이 바인딩에 사용할 수 있는 구성 설정에 대해 설명 합니다. Host. json 파일의 설정는 함수 앱 인스턴스의 모든 함수에 적용 됩니다. 아래 예제 host.json 파일에는 이 바인딩에 대한 버전 2.x+ 설정만 포함되어 있습니다. 버전 2.x 이상 버전의 함수 앱 구성 설정에 대 한 자세한 내용은 Azure Functions에 대 한 호스트 json 참조를 참조 하세요.

참고

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

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
속성 기본값 Description
원본 해당 없음 모든 함수에서 보낸 사람의 이메일 주소입니다.

다음 단계