public async Task SendMessageToUserAsync(MessageToUserDto model) { if (string.IsNullOrWhiteSpace(model.Message)) { throw new ArgumentException("Message can't be empty"); } if (!IsValidEmail(model.Login)) { throw new ArgumentException("Login is not a valid email: " + model.Login); } MimeMessage message = new MimeMessage { Subject = model.Subject, Body = new TextPart(TextFormat.Plain) { Text = model.Message } }; message.To.Add(new MailboxAddress("User", model.Login)); message.From.Add(new MailboxAddress(model.SenderName, _emailConfigurations.Email)); using (SmtpClient emailClient = new SmtpClient()) { emailClient.Connect(_emailConfigurations.SmtpServer, _emailConfigurations.SmtpPort, true); emailClient.Authenticate(_emailConfigurations.UserName, _emailConfigurations.Password); emailClient.Send(message); emailClient.Disconnect(true); } Thread.Sleep(DileyTime); }
public async Task SendMessageToUserAsync(MessageToUserDto model) { string userId = await GetUserIdAsync(model.Login); await SendMessage(userId, MessageBuilder(model.SenderName, model.Subject, model.Message)); Thread.Sleep(DileyTime); }
public async Task <IActionResult> SendMessageToUsersAsync([FromBody] MessageToUsersModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } UserCheckResultDto userCheckResult; List <UserCheckResultDto> userCheckResults = new List <UserCheckResultDto>(); ISocialProvider provider = _serviceAccessor(model.Provider); MessageToUserDto messageToUser = new MessageToUserDto { SenderName = model.SenderName, Subject = model.Subject, Message = model.Message, Priority = model.Priority }; using (IEnumerator <string> enumer = model.Logins.GetEnumerator()) { if (enumer.MoveNext()) { if (string.IsNullOrEmpty(parentIds[model.Provider]) || JobStorage.Current.GetMonitoringApi().JobDetails(parentIds[model.Provider]) == null) { userCheckResult = await provider.UserCheck(enumer.Current); userCheckResults.Add(userCheckResult); if (userCheckResult.IsValid) { messageToUser.Login = enumer.Current; parentIds[model.Provider] = BackgroundJob.Enqueue(() => provider.SendMessageToUserAsync(messageToUser)); } if (!enumer.MoveNext()) { return(Ok(JsonConvert.SerializeObject(userCheckResults))); } } do { userCheckResult = await provider.UserCheck(enumer.Current); userCheckResults.Add(userCheckResult); if (userCheckResult.IsValid) { messageToUser.Login = enumer.Current; parentIds[model.Provider] = BackgroundJob.ContinueWith(parentIds[model.Provider], () => provider.SendMessageToUserAsync(messageToUser)); } } while (enumer.MoveNext()); } } return(Ok(JsonConvert.SerializeObject(userCheckResults))); }
public async Task SendMessageToUserAsync(MessageToUserDto model) { if (string.IsNullOrWhiteSpace(model.Message)) { throw new ArgumentException("Message can't be empty"); } TLUser user = await GetUserAsync(model.Login); await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id }, MessageBuilder(model.SenderName, model.Subject, model.Message)); Thread.Sleep(DileyTime); }