reactjs 用react实现sendgrid,用azure实现dotnet

xzv2uavs  于 2023-05-28  发布在  React
关注(0)|答案(1)|浏览(157)

因此,我在Azure中使用create-react-app创建了我的应用程序,但需要添加在提交表单后发送邮件的功能。我知道这不能在我的react应用程序中完成,但是远离后端工作一段时间,我试图在网上搜索一个教程或一些可以指导我的东西,并使用sendgrid设置某种Dotnet,以便这个UI现在可以用我的表单处理发送电子邮件。你们中有谁能推荐一些方向,教程等。以协助这一点,因为我没有看到的东西在Sendgrid网站上为这一点。
我试图在网上搜索一个教程或一些可以指导我的东西,并使用sendgrid设置某种Dotnet,这样这个UI现在就可以用我的表单处理发送电子邮件。你们中有谁能推荐一些方向,教程等。以协助这一点,因为我没有看到的东西在Sendgrid网站上为这一点。

tvmytwxo

tvmytwxo1#

用SendGrid设置一些Dotnet,这样这个UI现在就可以用我的表单处理发送电子邮件了。

  • 创建使用SendGrid绑定发送电子邮件的Azure Function。然后,您可以使用HTTP请求从React应用程序调用此函数。下面是工作的代码。
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Configuration;
using SendGrid;
using SendGrid.Helpers.Mail;

public class EmailFunction
{
    private readonly IConfiguration configuration;

    public EmailFunction(IConfiguration configuration)
    {
        this.configuration = configuration;
    }

    [Function("SendEmail")]
    public async Task<HttpResponseData> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = "sendemail")] HttpRequestData req,
        FunctionContext context)
    {
        var emailData = await req.ReadFromJsonAsync<EmailData>();

        if (emailData == null)
        {
            var response = req.CreateResponse(HttpStatusCode.BadRequest);
            await response.WriteStringAsync("Invalid email data");
            return response;
        }

        var apiKey = configuration["SendGridApiKey"];
        var client = new SendGridClient(apiKey);
        var msg = new SendGridMessage
        {
            From = new EmailAddress("your-email@example.com", "Your Name"),
            Subject = "Form Submission",
            PlainTextContent = $"New form submission:\n\nName: {emailData.Name}\nEmail: {emailData.Email}\nMessage: {emailData.Message}",
            HtmlContent = $"<p>New form submission:</p><p><strong>Name:</strong> {emailData.Name}</p><p><strong>Email:</strong> {emailData.Email}</p><p><strong>Message:</strong> {emailData.Message}</p>"
        };
        msg.AddTo(new EmailAddress("recipient-email@example.com"));

        var response = await client.SendEmailAsync(msg);
        if (response.StatusCode != HttpStatusCode.Accepted)
        {
            var errorResponse = req.CreateResponse(HttpStatusCode.InternalServerError);
            await errorResponse.WriteStringAsync("Failed to send email");
            return errorResponse;
        }

        var successResponse = req.CreateResponse(HttpStatusCode.OK);
        await successResponse.WriteStringAsync("Email sent successfully");
        return successResponse;
    }
}

public class EmailData
{
    public string Name { get; set; }
    public string Email { get; set; }
    public string Message { get; set; }
}

在NuGet包管理器控制台中安装SendGrid NuGet包

  • 在Azure Marketplace中,有一个Twilio sendgrid服务,可以创建一个sendgrid并提供需要触发检查的电子邮件。

  • 它使用SendGrid API密钥来验证SendGrid并创建SendGrid客户端。然后,它使用表单数据创建一个SendGrid消息,并使用客户机发送该消息。
    检查引用:
  • Azure Functions SendGrid bindings

相关问题