public async Task <SendEmailDomain> SendAndLogEmailAsync(SendEmailDomain email) { string emailAddress = email.Address; string emailDisplayName = email.DisplayName; // Send email var emailToSend = new Email(email.Subject, email.Body, ContentType.Html, new EmailAddress(emailAddress, emailDisplayName)); emailToSend.To.Add(new EmailAddress(email.Emails.First(), emailDisplayName)); //Email must always have a valid recipient emailToSend.Headers.AddRange(email.Emails); // Must always add to headers for utilizing send-grid api await _mailerRepository.SendMail(emailToSend); email.Id = ((int)email.Template) + GetUtcTimestamp(); email.Created = DateTime.UtcNow; // Log sent email SendEmailEntity entity = _mapper.Map <SendEmailDomain, SendEmailEntity>(email); await _sendEmailRepository.AddAsync(entity); return(email); }
public async Task SendNewRecoveryMail(DomainUser user, string validationPath) { string guid = Guid.NewGuid().ToString(); DateTime expires = DateTime.UtcNow.Add(_expirationTime); var recoveryLink = new RecoveryLink { ExpirationDate = expires, Id = guid }; PasswordRecoveryEntity entity = _passwordRecoveryFactory.CreateDefault(user.Id, guid, user.Email, expires); PasswordRecoveryEntity recoveryEntity = await _passwordRecoverRepository.AddAsync(entity); string linkRoot = _settings.PortalUri + validationPath; string linkText = _recoveryLinkService.CreateRecoveryLinkText(recoveryLink, linkRoot); Email emailToSend = ComposeRecoveryMail(recoveryEntity, user.Name, linkText); await _mailerRepository.SendMail(emailToSend); }