Pengikatan Azure Functions SendGrid

Artikel ini menjelaskan cara mengirim email dengan menggunakan pengikatan SendGrid di Azure Functions. Azure Functions mendukung pengikatan output untuk SendGrid.

Ini adalah informasi referensi untuk pengembang Azure Functions. Jika Anda baru menggunakan Azure Functions, mulailah dengan sumber daya berikut ini:

Menginstal ekstensi

Paket NuGet ekstensi yang Anda instal bergantung pada mode C# yang Anda gunakan di aplikasi fungsi Anda:

Functions dijalankan dalam proses pekerja C# yang terisolasi. Untuk mempelajari selengkapnya, lihat Panduan untuk menjalankan C# Azure Functions dalam proses pekerja yang terisolasi.

Fungsionalitas ekstensi tersebut bervariasi tergantung pada versi ekstensi:

Tambahkan ekstensi ke proyek Anda dengan menginstal paket NuGet, versi 3.x.

Memasang bundel

Dimulai dengan Functions versi 2.x, ekstensi HTTP adalah bagian dari bundel ekstensi, yang ditentukan dalam file proyek host.json. Untuk mempelajari lebih lanjut, lihat bundel ekstensi.

Versi ekstensi ini akan tersedia untuk aplikasi fungsi dengan bundel ekstensi, versi 2.x.

Contoh

Fungsi C# dapat dibuat dengan menggunakan salah satu mode C# berikut:

  • Model pekerja terisolasi: Fungsi C# terkompilasi yang berjalan dalam proses pekerja yang terisolasi dari runtime. Proses pekerja terisolasi diperlukan untuk mendukung fungsi C# yang berjalan pada versi LTS dan non-LTS .NET dan .NET Framework.
  • Model dalam proses: Fungsi C# yang dikompilasi yang berjalan dalam proses yang sama dengan runtime Functions.
  • Skrip C#: Digunakan terutama saat Anda membuat fungsi C# di portal Azure.

Penting

Dukungan akan berakhir untuk model dalam proses pada 10 November 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke model pekerja yang terisolasi untuk dukungan penuh.

Saat ini kami tidak memiliki contoh untuk menggunakan pengikatan SendGrid di aplikasi fungsi yang berjalan dalam proses pekerja yang terisolasi.

Contoh berikut menunjukkan pengikatan output SendGrid dalam file function.json dan fungsi JavaScript yang menggunakan pengikatan.

Berikut data pengikatan dalam file function.json:

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

Bagian konfigurasi menjelaskan properti ini.

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

Contoh PowerShell lengkap untuk pengikatan SendGrid saat ini tidak tersedia.

Contoh berikut menunjukkan fungsi yang dipicu HTTP yang mengirim email menggunakan pengikatan SendGrid. Anda dapat memberikan nilai default dalam konfigurasi pengikatan. Misalnya, alamat email dari dikonfigurasi dalam 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"
    }
  ]
}

Fungsi berikut ini memperlihatkan cara menyediakan nilai kustom untuk properti opsional.

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

Contoh berikut menggunakan anotasi @SendGridOutput dari pustaka runtime fungsi Java untuk mengirim email menggunakan pengikatan output 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();
    }
}

Atribut

Pustaka C# proses dalam proses dan terisolasi menggunakan atribut untuk menentukan pengikatan output. Sebagai gantinya, skrip C# menggunakan file konfigurasi function.json.

Dalam aplikasi fungsi proses pekerja yang SendGridOutputAttribute terisolasi, mendukung parameter berikut:

Properti atribut/anotasi Deskripsi
ApiKey Nama pengaturan aplikasi yang berisi kunci API Anda. Jika tidak diatur, nama pengaturan aplikasi default adalah AzureWebJobsSendGridApiKey.
Untuk (Opsional) Alamat email penerima.
Dari (Opsional) Alamat email pengirim.
Subjek (Opsional) Subjek email.
Teks (Opsional) Konten email.

Anotasi

Anotasi SendGridOutput memungkinkan Anda mengonfigurasi pengikatan SendGrid secara deklaratif dengan menyediakan nilai konfigurasi berikut.

Konfigurasi

Tabel berikut mencantumkan properti konfigurasi pengikatan yang tersedia di file function.json dan di atribut/anotasi SendGrid.

Properti function.json Deskripsi
jenis Harus diatur ke sendGrid.
arah Harus diatur ke out.
nama Nama variabel yang digunakan dalam kode fungsi untuk permintaan atau badan permintaan. Nilai ini adalah $return ketika hanya ada satu nilai yang dikembalikan.
apiKey Nama pengaturan aplikasi yang berisi kunci API Anda. Jika tidak disetel, nama pengaturan aplikasi default adalah AzureWebJobsSendGridApiKey.
ke (Opsional) Alamat email penerima.
dari (Opsional) Alamat email pengirim.
subject (Opsional) Subjek email.
text (Opsional) Konten email.

Properti opsional mungkin memiliki nilai default yang didefinisikan dalam pengikatan dan bisa ditambahkan atau ditimpa secara terprogram.

Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values.

Pengaturan host.json

Bagian ini menjelaskan pengaturan konfigurasi yang tersedia untuk pengikatan ini dalam versi 2.x dan yang lebih tinggi. Pengaturan dalam file host.json berlaku untuk semua fungsi dalam instans aplikasi fungsi. Contohnya file host.json di bawah ini hanya berisi pengaturan versi 2.x+ untuk pengikatan ini. Untuk informasi selengkapnya tentang pengaturan konfigurasi aplikasi fungsi dalam versi 2.x dan seterusnya, lihat referensi host.json untuk Azure Functions.

Catatan

Untuk referensi host.json di Azure Functions 1.x, lihat referensi host.json untuk Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Properti Default Deskripsi
dari n/a Alamat email pengirim di semua fungsi.

Langkah berikutnya