public Guid SendReport(InitialReport report) { var responsible = responsibleFounder.GetResponsible(report.Location); Console.WriteLine($"Found responsible: {JsonConvert.SerializeObject(responsible)}"); if (!responsible.IsActive) { // todo(sivukhin, 18.05.2019): Handle inactive responsible case throw new Exception(); } var fullReport = new Report { UserId = report.UserId, Subject = report.Subject, Location = report.Location, ReportText = report.ReportText, Attachments = report.Attachments, CreationDate = DateTime.UtcNow, ResponsibleId = responsible.Id, }; var reportId = reportRepository.AddReport(fullReport); var user = userRepository.GetUser(report.UserId); emailRepository.AddEmail(new EmailMessage { Body = messageExtender.ExtendReportText(responsible, user, fullReport), Subject = messageExtender.ExtendSubject(fullReport), RecipientEmail = responsible.Email, ResponsibleId = responsible.Id, Attachments = report.Attachments, }); return(reportId); }
public int AddDevOpsEmails() { _gMailService.setGmailService(); var messages = _gMailService.getMessages("DevOps", "DevOps"); var messageCount = messages?.Count ?? 0; List <Email> emails = new List <Email> { }; List <Task> tasks = new List <Task> { }; if (messageCount > 0) { foreach (var messageId in messages.Select(m => m.Id)) { var task = Task.Run(() => { var message = _gMailService.getMessage(messageId); var messagePartSubject = message.Payload.Headers.FirstOrDefault(h => h.Name == "Subject"); var messagePartFrom = message.Payload.Headers.FirstOrDefault(h => h.Name == "From"); var messagePartDate = (long)message.InternalDate; emails.Add(new Email { Fecha = DateTimeOffset.FromUnixTimeMilliseconds(messagePartDate).UtcDateTime, From = messagePartFrom.Value, Subject = messagePartSubject.Value }); }); tasks.Add(task); } try { Task.WaitAll(tasks.ToArray()); emails.ForEach(email => _emailRepository.AddEmail(email)); } catch (AggregateException exceptions) { exceptions.InnerExceptions.ToList().ForEach(e => Console.WriteLine($"Something failed when reading/writting the emails {e.Message}")); } } return(emails.Count); }
public ProcResult AddEmail(EmailViewModel model) { if (model.EmaidID == 0) { return(Mapper.Map <ProcResult>(_iEmailRepository.AddEmail(Mapper.Map <MTEmail>(model)))); } else { return(Mapper.Map <ProcResult>(_iEmailRepository.UpdateEmail(Mapper.Map <MTEmail>(model)))); } }
internal async Task Process() { async Task Send250Ok(string message = null) { await SendMessageAsync($"250 Ok" + (message == null ? String.Empty : ": " + message)); } try { this.smtpWriter = this.tcpConnection.GetStream(); this.smtpReader = new StreamReader(this.smtpWriter, Encoding.UTF8, false, 4069, true); await SendMessageAsync("220 " + this.server.Settings.ServiceDomain); EmailMessage receivedEmail = new EmailMessage(); string message; while ((message = await ReceiveMessageAsync()) != null) { string command = ParseCommand(message); string payload = ParsePayload(message, command); switch (command) { case "HELO": await SendMessageAsync($"250 {this.server.Settings.ServiceDomain} SmtpMoq server responding"); break; case "EHLO": await SendMessageAsync($"250 {this.server.Settings.ServiceDomain} SmtpMoq server responding"); await SendMessageAsync($"250-SMTPUTF8"); break; case "NOOP": await Send250Ok(); break; case "QUIT": await SendMessageAsync("221 It was nice talking to you. Bye."); return; case "RSET": receivedEmail = new EmailMessage(); await Send250Ok(); break; case "MAIL FROM": receivedEmail.From = ExtractString(payload, "<", ">"); await Send250Ok(); break; case "RCPT TO": string recipient = ExtractString(payload, "<", ">"); receivedEmail.Recipients = receivedEmail.Recipients.Concat(new string[] { recipient }).ToArray(); await Send250Ok(); break; case "DATA": await SendMessageAsync("354 Start mail input; end with <CRLF>.<CRLF>"); string line; StringBuilder receivedData = new StringBuilder(); while ((line = await ReceiveMessageAsync()) != ".") { receivedData.Append(line); } receivedEmail.Data = receivedData.ToString(); receivedEmail.Guid = Guid.NewGuid(); emailRepository.AddEmail(receivedEmail); await Send250Ok("queued as " + receivedEmail.Guid.ToString()); break; case "VRFY": await SendMessageAsync("250 " + payload); break; default: await SendMessageAsync("500 Unknow command"); break; } } } finally { this.server.CloseConnection(this.tcpConnection); } }
public void RegisterEmail(string email) { _emailRepository.AddEmail(email); }