وظائف Azure روابط SendGrid

تشرح هذه المقالة كيفية إرسال البريد الإلكتروني باستخدام روابط SendGrid في Azure Functions. تدعم وظائف Azure ربط الإخراج لـ SendGrid.

هذه معلومات مرجعية لمطوري Azure Functions. إذا كنت جديداً على Azure Functions، فابدأ بالموارد التالية:

تثبيت الملحق

تعتمد حزمة NuGet الملحق التي تقوم بتثبيتها على وضع C# الذي تستخدمه في تطبيق الوظائف:

يتم تنفيذ الوظائف في عملية عامل C# معزولة. لمعرفة المزيد، راجع دليل تشغيل وظائف C# Azure في عملية عامل معزولة.

تختلف وظيفة الملحق باختلاف إصدار الملحق:

أضف الملحق إلى مشروعك عن طريق تثبيت حزمة NuGet، الإصدار 3.x.

تثبيت الحزمة

بدءاً من الإصدار 2.x من الوظائف، يعد ملحق HTTP جزءاً من حزمة الملحقات المحددة في ملف مشروع host.json الخاص بك. لمعرفة المزيد، راجع حزمة الإضافات.

من المفترض أن يكون هذا الإصدار من الإضافة متاحاً بالفعل لتطبيق وظيفتك باستخدام حزمة الإضافات، الإصدار 2.x.

مثال

يمكن إنشاء دالة C# باستخدام أحد أوضاع C# التالية:

  • نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. عملية العامل المعزولة مطلوبة لدعم وظائف C# التي تعمل على إصدارات LTS وغير LTS .NET و.NET Framework.
  • نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل الوظائف.
  • البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Microsoft Azure.

هام

سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.

ليس لدينا حاليا مثال لاستخدام ربط SendGrid في تطبيق دالة يعمل في عملية عامل معزولة.

يظهر المثال التالي ربط إخراج SendGrid في ملف function.json ودالة 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.

يوضح المثال التالي وظيفة يتم تشغيلها بواسطة HTTP والتي ترسل بريدًا إلكترونيًا باستخدام ربط SendGrid. يمكنك توفير القيم الافتراضية في تكوين الربط. على سبيل المثال، يتم تكوين عنوان البريد الإلكتروني من في 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")

يستخدم المثال التالي التعليق التوضيحي @SendGridOutput من مكتبة وقت تشغيل وظائف Java لإرسال بريد إلكتروني باستخدام ربط إخراج 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();
    }
}

السمات

تستخدم كل من مكتبات المعالجة والعامل المعزول C# السمات لتعريف ربط الإخراج. يستخدم برنامج C# النصي بدلًا من ذلك ملف تكوين function.json.

في تطبيقات وظائف معالجة العامل المعزولة SendGridOutputAttribute ، يدعم المعلمات التالية:

خاصية السمة / التعليق التوضيحي ‏‏الوصف
مفتاح واجهة برمجة التطبيقات اسم إعداد التطبيق الذي يحتوي على مفتاح API الخاص بك. إذا لم يتم تعيينه، فإن اسم إعداد التطبيق الافتراضي هو AzureWebJobsSendGridApiKey.
إلى (اختياري) عنوان البريد الإلكتروني للمستلم.
من (اختياري) عنوان البريد الإلكتروني للمرسل.
الموضوع (اختياري) موضوع البريد الإلكتروني.
نص (اختياري) محتوى البريد الإلكتروني.

تعليقات توضيحية

يتيح لك التعليق التوضيحي SendGridOutput تكوين ربط SendGrid بشكل تصريحي من خلال توفير قيم التكوين التالية.

التكوين

يسرد الجدول التالي خصائص تكوين الربط المتوفرة في ملف function.json والسمة/التعليق التوضيحي SendGrid.

خاصية function.json ‏‏الوصف
النوع يجب تعيينه إلى sendGrid.
الاتجاه يجب تعيينه إلى out.
الاسم اسم المتغير المستخدم في كود الوظيفة للطلب أو جسم الطلب. تكون $return هذه القيمة عندما تكون هناك قيمة إرجاع واحدة فقط.
apiKey اسم إعداد التطبيق الذي يحتوي على مفتاح API الخاص بك. إذا لم يتم تعيين اسم إعداد التطبيق الافتراضي هو AzureWebJobsSendGridApiKey.
ل (اختياري) عنوان البريد الإلكتروني للمستلم.
من (اختياري) عنوان البريد الإلكتروني للمرسل.
موضوع (اختياري) موضوع البريد الإلكتروني.
text (اختياري) محتوى البريد الإلكتروني.

قد تحتوي الخصائص الاختيارية على قيم افتراضية محددة في الربط وإما أن تتم إضافتها أو تجاوزها برمجيًا.

عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.

إعدادات host.json

يصف هذا القسم إعدادات التكوين المتاحة لهذا الربط في الإصدارات 2.x وأعلى. تنطبق الإعدادات في ملف host.json على جميع الوظائف في مثيل تطبيق الوظائف. يحتوي مثال ملف host.json أدناه على إعدادات الإصدار 2.x + فقط لهذا الربط. للحصول على مزيدٍ من المعلومات عن إعدادات تكوين التطبيق الوظيفي في الإصدارات 2.x والإصدارات الأحدث، راجع مرجع host.json لوظائف Azure.

إشعار

للحصول على مرجع لـ host.json في دالات 1.x، راجع مرجع host.json لوظائفAzure 1.x.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
الخاصية Default ‏‏الوصف
من غير متوفر عنوان البريد الإلكتروني للمرسل عبر جميع الوظائف.

الخطوات التالية