Ejemplo n.º 1
0
        public async Task ReplyToAsync(int id, int userId, string answer, bool replyToAll, ICollection <IFormFile> attachments = null, ICollection <string> cc = null, ICollection <string> bcc = null)
        {
            var messageWithEmailAccountAndEmailProviders = await _emailMessageRepository.GetByUserIdWithEmailAccountAndEmailProvidersAsync(userId, id);

            if (messageWithEmailAccountAndEmailProviders == null)
            {
                throw new Exception("This user does not have message with this id.");
            }
            if (messageWithEmailAccountAndEmailProviders.EmailAccount == null ||
                messageWithEmailAccountAndEmailProviders.EmailAccount.Imap == null ||
                messageWithEmailAccountAndEmailProviders.EmailAccount.Smtp == null)
            {
                throw new Exception("This user does not have email account or email providers.");
            }
            var messageFromEmailAccount = await _emailClientAggregate.GetDeliveredMessageBySubjectAndDateAsync(messageWithEmailAccountAndEmailProviders.EmailAccount.Imap.Host, messageWithEmailAccountAndEmailProviders.EmailAccount.Imap.Port, messageWithEmailAccountAndEmailProviders.EmailAccount.Email, messageWithEmailAccountAndEmailProviders.EmailAccount.Password, messageWithEmailAccountAndEmailProviders.Subject, messageWithEmailAccountAndEmailProviders.DeliveredAt);

            await _emailClientAggregate.ReplyToAsync(messageWithEmailAccountAndEmailProviders.EmailAccount.Smtp.Host, messageWithEmailAccountAndEmailProviders.EmailAccount.Smtp.Port, messageWithEmailAccountAndEmailProviders.EmailAccount.Email, messageWithEmailAccountAndEmailProviders.EmailAccount.Password, messageFromEmailAccount, replyToAll, answer, attachments, cc, bcc);
        }