微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Azure函数中使用SendGrid?

如何解决如何在Azure函数中使用SendGrid?

我试图了解如何在Azure门户中开发的Azure函数中使用SendGrid。我一直在从Google提出的多个角度来探讨这个问题,但是似乎有许多过时的方法无法解决Azure门户中可用的问题。下面是我当前发送电子邮件的基本迭代,我直接从SendGrid博客https://sendgrid.com/blog/using-sendgrid-with-azure-functions-to-send-mobile-app-survey-data)中提取了电子邮件。我已经看到了使用 project.json 文件来确保已安装SendGrid软件包的参考,但是我无法在函数中创建这样的文件,我只能操纵 run .csx function.json 文件。以下是我的代码和遇到的错误。我想念什么?

#r "Newtonsoft.Json"
#r "SendGrid"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using SendGrid.Helpers.Mail;

public static void Run(HttpRequest req,ILogger log,out Message message)
{
    log.Loginformation("C# HTTP trigger function processed a request.");

    message = new Mail {
        Subject = "Test Notification"
    };

    string requestBody = new StreamReader(req.Body).ReadToEnd();

    Content content = new Content {
        Type = "text/html",Value = requestBody
    };
    
    message.AddContent(content);
}

错误
[错误] run.csx(10,58):错误CS0246:找不到类型或名称空间名称“消息”(您是否缺少using指令或程序集引用?)
[错误] run.csx(14,19):错误CS0246:找不到类型或名称空间名称邮件”(您是否缺少using指令或程序集引用?)

Screenshot of my Azure Function

解决方法

也许尝试使用SendGridMessage message = new SendGridMessage() ???

我首先建议您尝试以下操作,以确保您的SendGrid流正确运行:

  1. 创建“发送网格”通知类型的新功能。您将能够看到有关如何以这种方式使用SendGrid的正确C#。看到这张图片 See this Image

然后您可以更新现有代码以使其正常运行。 我能够创建一个示例HTTP触发函数来发送SendGrid消息。我已附上function.json和run.csx供您参考。

function.json

{
  "bindings": [
    {
      "authLevel": "function","name": "req","type": "httpTrigger","direction": "in","methods": [
        "get","post"
      ]
    },{
      "name": "$return","apiKey": "sendgridkey","to": "receiver@test.com","from": "sender@test.com","direction": "out","type": "sendGrid"
    }
  ]
}

此处,“ sendgridkey”是一个应用程序配置,以SendGrid API密钥作为其值。我为电子邮件添加了虚拟值。

我的run.csx如下:

#r "SendGrid"
#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using SendGrid.Helpers.Mail;

public static async Task<SendGridMessage> Run(HttpRequest req,ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;

    
    SendGridMessage message = new SendGridMessage()
    {
        Subject = $"Thanks for your order (#{name})!"
    };

    message.AddContent("text/plain","Your order is being processed now!!");
    return message;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。