SendGrid bağlamalarını Azure İşlevleri

Bu makalede, Azure İşlevleri'de SendGrid bağlamalarını kullanarak e-posta gönderme işlemi açıklanmaktadır. Azure İşlevleri SendGrid için çıkış bağlamasını destekler.

Bu, Azure İşlevleri geliştiricilerin başvuru bilgileridir. Azure İşlevleri kullanmaya yeni başladıysanız aşağıdaki kaynaklarla başlayın:

Uzantıyı yükleme

Yüklediğiniz NuGet uzantısı, işlev uygulamanızda kullandığınız C# moduna bağlıdır:

İşlevler yalıtılmış bir C# çalışan işleminde yürütülür. Daha fazla bilgi edinmek için bkz. Yalıtılmış çalışan işleminde C# Azure İşlevleri çalıştırma kılavuzu.

Uzantının işlevselliği, uzantı sürümüne bağlı olarak değişir:

NuGet paketi sürüm 3.x'i yükleyerek uzantıyı projenize ekleyin.

Paket yükleme

İşlevler sürüm 2.x'den başlayarak HTTP uzantısı, host.json proje dosyanızda belirtilen bir uzantı paketinin parçasıdır. Daha fazla bilgi edinmek için bkz . uzantı paketi.

Uzantının bu sürümü, işlev uygulamanız için uzantı paketi sürüm 2.x ile zaten kullanılabilir olmalıdır.

Örnek

C# işlevi aşağıdaki C# modlarından biri kullanılarak oluşturulabilir:

  • Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. LTS ve .NET ve .NET Framework dışındaki sürümlerde çalışan C# işlevlerini desteklemek için yalıtılmış çalışan işlemi gereklidir.
  • İşlem içi model: İşlevler çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi.
  • C# betiği: Öncelikle Azure portalında C# işlevleri oluşturduğunuzda kullanılır.

Önemli

İşlem içi model desteği 10 Kasım 2026'da sona erecektir. Tam destek için uygulamalarınızı yalıtılmış çalışan modeline geçirmenizi kesinlikle öneririz.

SendGrid bağlamasını yalıtılmış bir çalışan işleminde çalışan bir işlev uygulamasında kullanmak için şu anda bir örneğimiz yok.

Aşağıdaki örnekte, bir function.json dosyasında sendGrid çıkış bağlaması ve bağlamayı kullanan bir JavaScript işlevi gösterilmektedir.

function.json dosyasındaki bağlama verileri aşağıdadır:

{
    "bindings": [
        {
            "name": "$return",
            "type": "sendGrid",
            "direction": "out",
            "apiKey" : "MySendGridKey",
            "to": "{ToEmail}",
            "from": "{FromEmail}",
            "subject": "SendGrid output bindings"
        }
    ]
}

Yapılandırma bölümünde bu özellikler açıklanır.

JavaScript kodu şu şekildedir:

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;
};

SendGrid bağlamaları için tam PowerShell örnekleri şu anda kullanılamıyor.

Aşağıdaki örnekte, SendGrid bağlamasını kullanarak e-posta gönderen HTTP ile tetiklenen bir işlev gösterilmektedir. Bağlama yapılandırmasında varsayılan değerleri sağlayabilirsiniz. Örneğin, kimden e-posta adresi function.json yapılandırılır.

{
  "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"
    }
  ]
}

Aşağıdaki işlev, isteğe bağlı özellikler için özel değerleri nasıl sağlayabileceğinizi gösterir.

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")

Aşağıdaki örnek, SendGrid çıkış bağlamasını @SendGridOutputkullanarak e-posta göndermek için Java işlevleri çalışma zamanı kitaplığındaki ek açıklamayı kullanır.

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();
    }
}

Özellikler

Hem işlem içi hem de yalıtılmış çalışan işlemi C# kitaplıkları çıkış bağlamasını tanımlamak için öznitelikleri kullanır. C# betiği bunun yerine bir function.json yapılandırma dosyası kullanır.

Yalıtılmış çalışan işlemi işlev uygulamalarında, SendGridOutputAttribute aşağıdaki parametreleri destekler:

Öznitelik/ek açıklama özelliği Açıklama
ApiKey API anahtarınızı içeren bir uygulama ayarının adı. Ayarlanmadıysa, varsayılan uygulama ayarı adı olur AzureWebJobsSendGridApiKey.
İşlem (İsteğe bağlı) Alıcının e-posta adresi.
Başlangıç (İsteğe bağlı) Gönderenin e-posta adresi.
Konu (İsteğe bağlı) E-postanın konusu.
Metin (İsteğe bağlı) E-posta içeriği.

Ek Açıklamalar

SendGridOutput ek açıklaması, aşağıdaki yapılandırma değerlerini sağlayarak SendGrid bağlamasını bildirimli olarak yapılandırmanıza olanak tanır.

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında kullanılabilen bağlama yapılandırma özellikleri ve SendGrid öznitelik/ek açıklama listelenir.

function.json özelliği Açıklama
type olarak ayarlanmalıdır sendGrid.
direction olarak ayarlanmalıdır out.
Adı İstek veya istek gövdesi için işlev kodunda kullanılan değişken adı. Bu değer yalnızca bir dönüş değeri olduğunda olur $return .
apiKey API anahtarınızı içeren bir uygulama ayarının adı. Ayarlanmadıysa, varsayılan uygulama ayarı adı AzureWebJobsSendGridApiKey'dir.
to (İsteğe bağlı) Alıcının e-posta adresi.
kaynak (İsteğe bağlı) Gönderenin e-posta adresi.
subject (İsteğe bağlı) E-postanın konusu.
text (İsteğe bağlı) E-posta içeriği.

İsteğe bağlı özellikler, bağlamada tanımlanan varsayılan değerlere sahip olabilir ve program aracılığıyla eklenebilir veya geçersiz kılınabilir.

Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues ekleyin.

host.json ayarları

Bu bölümde, 2.x ve üzeri sürümlerde bu bağlama için kullanılabilen yapılandırma ayarları açıklanmaktadır. host.json dosyasındaki Ayarlar bir işlev uygulaması örneğindeki tüm işlevlere uygulanır. Aşağıdaki örnek host.json dosyası, bu bağlama için yalnızca sürüm 2.x+ ayarlarını içerir. 2.x ve sonraki sürümlerdeki işlev uygulaması yapılandırma ayarları hakkında daha fazla bilgi için bkz. Azure İşlevleri için host.json başvuru.

Not

İşlevler 1.x'teki host.json başvurusu için bkz. Azure İşlevleri 1.x için host.json başvuru.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Özellik Varsayılan Açıklama
kaynak yok Tüm işlevlerde gönderenin e-posta adresi.

Sonraki adımlar