解析天蓝色的传入邮件

ACh*_*han 3 email parsing azure

我需要一个邮件解析器应用程序,它定期解析一些传入的邮件.

  1. 是否azure提供这样的工具?SendGrid似乎只是为了启用发送外发邮件和接收一些事件.
  2. 如果需要从头开发,Azure Logic App是否需要实现此类应用程序?

Jan*_*jek 7

  1. 在Azure中,您可以使用SendGrid - 它提供入站电子邮件解析,它非常强大,可以在您的项目中使用.
  2. 我没有使用Azure Logic Apps的实际经验,但从文档中,您似乎只需要创建一个简单的endpoin来捕获SendGrid的请求.


Rod*_*A92 6

三年多后,但我认为(并希望)这可以帮助面临这种情况的人们:

https://ml-software.ch/posts/receving-emails-using-sendgrid-inbound-parse

正如@Jan Hajek 所说,您可以使用 Sendgrid 入站解析。这篇文章没有分享整个代码,但它提供了一些片段以及如何在 Azure 函数上实现它的想法。

编辑:这是引用帖子所有者用来接受电子邮件、解析电子邮件并向定义的端点创建 POST 请求的代码段:

try
{
    // Use StrongGrid to parse the request body (handling multipart/form-data is not so simple)
    var parser = new WebhookParser();
    var inboundMail = parser.ParseInboundEmailWebhook(req.Body);

    // Use  an email parser to get only the visible text. The visible text will be the text that the user replied and not the whole text of the email with the original email.
    var email = EmailParser.Parse(inboundMail.Text);

    var data = new
    {
        To = inboundMail.To.FirstOrDefault()?.Email,
        From = ExtractEmail(inboundMail.From.Email),
        BookingNumber = GetBookingNumberFromEmail(inboundMail.To.FirstOrDefault()?.Email),
        Text = email.GetVisibleText(),
        Html = inboundMail.Html
    };

    log.LogInformation(JsonConvert.SerializeObject(data, Formatting.Indented));

    messages.Add(new Message
    {
        Label = "NewEmailFromGuestEvent",
        Body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data))
    });

    return new OkResult();
}
catch (Exception ex)
{
    log.LogError(ex.Message);
    return new BadRequestResult();
}
Run Code Online (Sandbox Code Playgroud)

据作者介绍:

它使用 StrongGrid(NuGet 包)来解析传入的 WebHook

首先,使用 StrongGrid 解析请求正文。这将返回一个强类型对象,其中包含从 SendGrid 发送的所有数据。然后,使用另一个库来解析电子邮件的文本。在此应用程序中,您只需要回复用户发送的内容,而不需要历史记录。为此,您可以使用EmailReplyParser(NuGet 包)。该项目不是很活跃,因此您稍后可能需要对其进行更改,但目前它已满足我们的需要。现在的最后一步是创建一个匿名对象,将所需的所有数据打包到其中,然后在 Azure 队列上创建一个新条目。在应用程序内部,您可以处理添加到队列中的消息并提取所需的信息。

这可能有点超出了所要求的实际解析器,但可能对那些徘徊在这个主题上的人有帮助。

希望有帮助!