/// <summary>
        /// Metodo para enviar un mensaje a varios correos electronicos.
        /// </summary>
        /// <param name="emailCredential">credenciales del Email propietario.</param>
        /// <param name="To">Email de destino.</param>
        /// <param name="Cc">Email de a copiar.</param>
        /// <param name="Bcc">Email de a copiar.</param>
        /// <param name="Subject">Asulto del mesaje.</param>
        /// <param name="MessageBody">Cuerpo del mensaje.</param>
        /// <param name="ReplyTo">Obtiene o establece la dirección Responder a para el mensaje de correo.</param>
        /// <param name="Sender">Obtiene o establece la dirección del remitente de este mensaje de correo electrónico. </param>
        /// <param name="AttachmentsDocuments">Documnetos adjuntos.</param>
        /// <returns>Retorn
        /// 1: si el mensaje se envio exitosamente;
        /// 2: El Email de destino es incorrecto;
        /// 3: El Email es incorrecto;
        /// 4: Si ubo un error al embiar el mensaje.
        /// </returns>
        public static Result SendBulkEmail
        (
            EmailCredential emailCredential,
            string[] To,
            string Subject,
            string MessageBody,
            string ReplyTo = null,
            string Sender  = null,
            string[] Cc    = null,
            string[] Bcc   = null,
            ICollection <Attachment> AttachmentsDocuments = null
        )
        {
            if (CheckEmails(To, Cc, Bcc, ReplyTo, Sender, emailCredential.Email) == Result.WrongDestinationEmail)
            {
                return(Result.WrongDestinationEmail);
            }

            return(GenerateSendEmail(emailCredential, InstanceMailMessage(To, Cc, Bcc, ReplyTo, Sender, emailCredential.Email, Subject, MessageBody, AttachmentsDocuments)));
        }
        /// <summary>
        /// Metodo para enviar un mensaje a un correo determinado.
        /// </summary>
        /// <param name="emailCredential">credenciales del Email propietario.</param>
        /// <param name="To">Email de destino.</param>
        /// <param name="Cc">Email de a copiar.</param>
        /// <param name="Bcc">Email de a copiar.</param>
        /// <param name="Subject">Asulto del mesaje.</param>
        /// <param name="MessageBody">Cuerpo del mensaje.</param>
        /// <param name="ReplyTo">Obtiene o establece la dirección Responder a para el mensaje de correo.</param>
        /// <param name="Sender">Obtiene o establece la dirección del remitente de este mensaje de correo electrónico. </param>
        /// <param name="AttachmentsDocuments">Documnetos adjuntos.</param>
        /// <returns>Retorn
        /// 1: si el mensaje se envio exitosamente;
        /// 2: El Email de destino es incorrecto;
        /// 3: El Email es incorrecto;
        /// 4: Si ubo un error al embiar el mensaje.
        /// </returns>
        public static Result SendMail
        (
            EmailCredential emailCredential,
            string To,
            string Subject,
            string MessageBody,
            string ReplyTo = null,
            string Sender  = null,
            string Cc      = null,
            string Bcc     = null,
            ICollection <Attachment> AttachmentsDocuments = null
        )
        {
            if (CheckEmails(new[] { To }, new[] { Cc }, new[] { Bcc }, ReplyTo, Sender, emailCredential.Email) != Result.Successful)
            {
                return(Result.WrongDestinationEmail);
            }

            return(GenerateSendEmail(emailCredential, InstanceMailMessage(new[] { To }, new[] { Cc }, new[] { Bcc }, ReplyTo, Sender, emailCredential.Email, Subject, MessageBody, AttachmentsDocuments)));
        }
 private static Result GenerateSendEmail(EmailCredential emailCredential, MailMessage Mail)
 {
     return(SendEmail(CreateInstanceSmtp(emailCredential), Mail));
 }
 private static SmtpClient CreateInstanceSmtp(EmailCredential emailCredential)
 {
     return(new SmtpClient
     {
         Host = GetClientEmail(emailCredential.Email[(emailCredential.Email.LastIndexOf('@') + 1)..]),
 private static async Task <Result> GenerateSendEmailAsync(EmailCredential emailCredential, MailMessage Mail)
 {
     return(await Task.Run(() => SendEmail(CreateInstanceSmtp(emailCredential), Mail)));
 }