У меня есть функция C# Azure с выходной привязкой к SendGrid. Эта функция Azure запускается, когда сообщение поступает в раздел ServiceBus. Я работаю с сообщением и, наконец, возвращаю SendGridMessage. Далее SendGrid отвечает за отправку фактического электронного письма.
Но во всем этом сценарии функция Azure не узнает, доставлено ли электронное письмо или нет. Есть ли какой-либо доступный способ или крючок, который может дать мне вышеупомянутые детали?
Любые ссылки, примеры приветствуются.
Спасибо


Я не думаю, что есть способ использовать привязку Sendgrid, поскольку вся логика отправки абстрагируется. Однако, если вам это нужно, не намного сложнее создать экземпляр собственного клиента Sendgrid внутри вашей функции:
using SendGrid;
using SendGrid.Helpers.Mail;
static SendGridClient _sendGridClient = new SendGridClient(ConfigurationManager.AppSettings["SendgridApiKey"]);
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
var result = await _sendGridClient.SendEmailAsync(msg);
log.LogDebug($"SendGrid result = {result.Body}");
Опять же, все в привязке SendGrid абстрагируется от вас. Таким образом, вы не можете реагировать на исключения и т. д., которые могут возникнуть в этом случае. Таким образом, вы также не можете влиять на поведение ваших входящих сообщений.
Ой ! в этом случае трудно быть уверенным, что электронные письма будут доставлены, если мы используем выходную привязку Sendgrid. Спасибо за помощь.
Вот почему я предлагаю в своем ответе использовать SDK Sendgrid непосредственно в вашей функции.
да, это один из выходов. Но я пытаюсь понять, выполняет ли инфраструктура AZURE повторную попытку при сбое привязки SendGrid?
Что ж, в этом и преимущество того, что все это с открытым исходным кодом ? вы можете видеть, что происходит за кулисами github.com/Azure/azure-webjobs-sdk-extensions/tree/master/src/…
И глядя на код, я бы сказал, что нет никаких повторных попыток.
Спасибо за ответ, да, глядя на github.com/Azure/azure-webjobs-sdk-extensions/blob/master/src/… это, повторной попытки нет, но я спрашиваю о повторной попытке служебной шины AZURE, что означает, что если есть ошибка привязки вывода с SendGrid, будет ли служебная шина повторно отправлять это сообщение в мою функцию azure?
Входная привязка (в вашем случае служебная шина) и выходная привязка (sendgrid) разделены. Так что нет, между ними нет взаимодействия.
Большое спасибо @silent. Очень ценю ваше время и усилия.
пожалуйста. Пожалуйста, примите ответ, если тема для вас закрыта.
Спасибо за ответ. Здесь, что я понимаю о служебной шине, сообщение отправляется в очередь недоставленных сообщений при 3 условиях: 1. При превышении MaxDeliveryCount 2. Превышение TimeToLive и 3. При ошибке оценки фильтра. Из этих 3 я понял первые 2, но не смог понять 3-й. Если возможно, можете поделиться светом на 3-м? Это как-то связано с ошибкой/исключениями в выходной привязке (в моем случае SendGrid)