¿Es posible enviar 45 correos por minuto mediante SendAsync en un Worker Services en .NET?

Desarrollo ITC 80 Puntos de reputación
2025-03-13T21:57:31.31+00:00

Hola, estoy trabajando en un servicio que permita poder enviar correos de manera masiva. Lo que se espera es que este servicio pueda enviar 45 correos por minuto.

En la actualidad se dispone de la cuota para cumplir con esto:

Imagen del usuario

Se está usando el siguiente ejemplo para poder implementar esto:

https://github.com/Azure-Samples/communication-services-dotnet-quickstarts/blob/main/SendEmailAdvanced/SendEmailWithInlineAttachments/Program.cs

¿Aplicando asincronismo es posible mandar los 45 correos por minuto? ¿Qué se recomienda aplicar para cumplir con este requerimiento?

Cualquier comentario se va agradecer mucho.

Saludos,

DESARROLLO ITC.

Azure Key Vault
Azure Key Vault
Servicio de Azure que se usa para administrar y proteger las claves criptográficas y otros secretos que usan las aplicaciones y los servicios en la nube.
17 preguntas
0 comentarios No hay comentarios
{count} votos

Respuesta aceptada
  1. Suresh Chikkam 545 Puntos de reputación Personal externo de Microsoft
    2025-03-14T09:38:22.29+00:00

    Hola @Desarrollo ITC ,

    Para enviar correos electrónicos con archivos adjuntos en línea utilizando ACS en una aplicación .NET, puedes utilizar la clase EmailAttachment, especificando un ContentId para cada archivo adjunto. Este ContentId permite que el archivo adjunto se haga referencia dentro del cuerpo HTML del correo electrónico.

    Revisa esta respuesta para optimizar la duración del envío de correos electrónicos.

    Aquí tienes el código modificado según los requisitos:

    using Azure.Communication.Email;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Threading.Tasks;
    class Program
    {
        static async Task Main(string[] args)
        {
            var connectionString = "<ACS_CONNECTION_STRING>";
            var emailClient = new EmailClient(connectionString);
            var subject = "Correo de prueba con adjuntos en línea";
            var emailContent = new EmailContent(subject)
            {
                PlainText = "Este es el cuerpo del correo en texto plano.",
                Html = "<html><body><h1>Imagen adjunta en línea:</h1><img src=\"cid:unique-content-id\" /></body></html>"
            };
            var sender = "<SENDER_EMAIL>";
            var recipient = "<RECIPIENT_EMAIL>";
            var emailRecipients = new EmailRecipients(new List<EmailAddress> {
                new EmailAddress(recipient)
            });
            var emailMessage = new EmailMessage(sender, emailRecipients, emailContent);
            // Agregar archivo adjunto en línea
            byte[] imageBytes = File.ReadAllBytes("path_to_image.jpg");
            var imageAttachment = new EmailAttachment(
                "image.jpg",
                "image/jpeg",
                new BinaryData(imageBytes),
                "unique-content-id" // ContentId
            );
            emailMessage.Attachments.Add(imageAttachment);
            try
            {
                EmailSendOperation emailSendOperation = await emailClient.SendAsync(WaitUntil.Completed, emailMessage);
                Console.WriteLine($"Correo enviado. Estado = {emailSendOperation.Value.Status}");
            }
            catch (RequestFailedException ex)
            {
                Console.WriteLine($"Error en el envío del correo. Código de error: {ex.ErrorCode}, mensaje: {ex.Message}");
            }
        }
    }
    

    Estoy traduciendo las respuestas del inglés, por lo que disculpa cualquier error gramatical.

    Espero que esto te ayude.


    Por favor, no olvides hacer clic en "Aceptar la respuesta" y marcar "Sí" si la información proporcionada te ha sido útil. Esto puede beneficiar a otros miembros de la comunidad.

    Imagen del usuario

    Si tienes más preguntas o sigues teniendo problemas, házmelo saber en los "comentarios", y estaré encantado de ayudarte.

    0 comentarios No hay comentarios

0 respuestas adicionales

Ordenar por: Muy útil

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.