Отправка электронной почты с помощью SendGrid с использованием WebJobs - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь интегрировать SendGrid в приложение .Net 4.5 с помощью WebJobs.

Я сделал базовые настройки, необходимые для отправки базовой электронной почты. Я пытаюсь запустить и проверить его на моей локальной машине. Я не могу понять, как отправить сообщения в очередь. Я не могу обновить .Net версию приложения на данный момент. Если это возможно сделать без использования веб-заданий, это тоже нормально.

Program.cs

static void Main()
{

    var config = new JobHostConfiguration();
    config.UseTimers();
    config.Queues.MaxDequeueCount = 2;
    config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(4);
    config.Queues.BatchSize = 2;

    if (config.IsDevelopment)
    {
        config.UseDevelopmentSettings();
    }

    config.UseSendGrid();

    var host = new JobHost(config);
    host.RunAndBlock();
}

Functions.cs

public static void ProcessQueueMessage([QueueTrigger("queue")] string message, TextWriter log, [SendGrid(From = "no-reply@company.com", To = "employee@company.com")] out Mail mail)
{
    log.WriteLine(message);

    mail = new Mail();

    var personalization = new Personalization();
    personalization.AddBcc(new Email("employee@company.com"));

    mail.AddPersonalization(personalization);
    mail.Subject = "Test Email Subject";
    mail.AddContent(new Content("text/html", $"The message '{message}' was successfully processed."));
}

Найдены следующие функции:SendGrid_Test_002.Functions.ProcessQueueMessage ServicePointManager.DefaultConnectionLimit имеет значение по умолчанию, равное 2. Это может ограничить пропускную способность соединения с такими службами, как хранилище Azure. Для получения дополнительной информации см. https://aka.ms/webjobs-connections. Хост задания запущен

Я получаю это на консоли.

Заранее спасибо:)

1 Ответ

0 голосов
/ 21 октября 2019

Мне просто нужно было отправить сообщения в очередь веб-заданий, используя следующий код.

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a container.
CloudQueue queue = queueClient.GetQueueReference("email-queue-name");

// Create the queue if it doesn't already exist
queue.CreateIfNotExists();

// Create message to be sent to the queue
CloudQueueMessage message = new CloudQueueMessage(JsonConvert.SerializeObject(new
{
    From = emailContent.From,
    To = emailContent.To,
    Cc = emailContent.Cc,
    Bcc = emailContent.Bcc,
    Subject = emailContent.Subject,
    Message = emailContent.Message
}).ToString());
queue.AddMessage(message);
...