Bagikan melalui


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.

Menginstal bundel

Agar dapat menggunakan ekstensi pengikatan ini di aplikasi Anda, pastikan file host.json di akar proyek Anda berisi referensi ini extensionBundle :

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

Dalam contoh ini, version nilai [4.0.0, 5.0.0) menginstruksikan host Functions untuk menggunakan versi bundel yang setidaknya 4.0.0 tetapi kurang dari 5.0.0, yang mencakup semua versi potensial 4.x. Notasi ini secara efektif mempertahankan aplikasi Anda pada versi minor terbaru yang tersedia dari bundel ekstensi v4.x.

Jika memungkinkan, Anda harus menggunakan versi utama bundel ekstensi terbaru dan memungkinkan runtime untuk secara otomatis mempertahankan versi minor terbaru. Anda dapat melihat konten bundel terbaru pada halaman rilis bundel ekstensi. Untuk informasi selengkapnya, lihat Bundel ekstensi Azure Functions.

Example

Anda dapat membuat fungsi C# 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 dukungan jangka panjang (LTS) dan non-LTS untuk .NET dan .NET Framework.
  • Model dalam proses: Fungsi C# terkompilasi yang berjalan dalam proses yang sama dengan runtime Azure Functions.
  • Skrip C#: Digunakan terutama saat Anda membuat fungsi C# di portal Microsoft Azure.

Important

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

Attributes

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 Description
ApiKey Nama pengaturan aplikasi yang berisi kunci API Anda. Jika tidak diatur, nama pengaturan aplikasi default adalah AzureWebJobsSendGridApiKey.
To (Opsional) Alamat email penerima.
From (Opsional) Alamat email pengirim.
Subject (Opsional) Subjek email.
Text (Opsional) Konten email.

Annotations

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

Configuration

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

Properti function.json Description
type Harus diatur ke sendGrid.
direction Harus diatur ke out.
name 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 diatur, nama pengaturan aplikasi default adalah AzureWebJobsSendGridApiKey.
to (Opsional) Alamat email penerima.
from (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.

Saat Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi Anda di filelocal.settings.json dalam Values koleksi.

Pengaturan host.json

Bagian ini menjelaskan pengaturan konfigurasi yang tersedia untuk pengikatan ini di versi 2.x dan yang lebih baru. Pengaturan dalam file host.json berlaku untuk semua fungsi dalam instans aplikasi fungsi. Untuk informasi selengkapnya tentang pengaturan konfigurasi aplikasi fungsi, lihat referensihost.json untuk Azure Functions.

Note

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>"
        }
    }
}
Property Default Description
from n/a Alamat email pengirim di semua fungsi.

Langkah selanjutnya