private NewEmailMessage CreateNewEmailMessageObject() { NewEmailMessage newItem = new NewEmailMessage(); try { MailAddressCollection toMailAddresses = new MailAddressCollection(); if (textBox_To.Text != "") { foreach (var recipient in textBox_To.Text.Split(',')) { toMailAddresses.Add(recipient); } } newItem.ToRecipients = toMailAddresses; MailAddressCollection ccMailAddresses = new MailAddressCollection(); if (textBox_Cc.Text != "") { foreach (var recipient in textBox_Cc.Text.Split(',')) { ccMailAddresses.Add(recipient); } } newItem.CcRecipients = ccMailAddresses; MailAddressCollection bccMailAddresses = new MailAddressCollection(); if (textBox_Bcc.Text != "") { foreach (var recipient in textBox_Bcc.Text.Split(',')) { bccMailAddresses.Add(recipient); } } newItem.BccRecipients = bccMailAddresses; } catch (Exception ex) { throw new Exception("Invalid recipients. " + ex.Message, ex); } newItem.Subject = textBox_Subject.Text; newItem.BodyType = (BodyType)comboBox_BodyType.SelectedIndex; newItem.Body = textBox_Body.Text; newItem.Importance = (Importance)comboBox_Importance.SelectedIndex; newItem.RequestDeliveryReceipt = checkBox_RequestDeliveryReceipt.Checked; newItem.RequestReadReceipt = checkBox_RequestReadReceipt.Checked; newItem.Attachments = attachments; newItem.SaveToSentItems = checkBox_SaveToSentItems.Checked; return(newItem); }
public async Task <Guid> InsertMessageAsync(NewEmailMessage newEmailMessage) { var entity = newEmailMessage.MapFromNewDto(); _dbContext.Value.EmailMessages.Add(entity); await _dbContext.Value.SaveChangesAsync(); return(entity.Id); }
private NewEmailMessage CreateNewEmailMessageObject() { NewEmailMessage newItem = new NewEmailMessage(); try { List <Recipient> toMailAddresses = new List <Recipient>(); if (textBox_To.Text != "") { foreach (var recipient in textBox_To.Text.Split(';')) { toMailAddresses.Add(new Recipient("", recipient.Trim())); } } newItem.ToRecipients = toMailAddresses; List <Recipient> ccMailAddresses = new List <Recipient>(); if (textBox_Cc.Text != "") { foreach (var recipient in textBox_Cc.Text.Split(';')) { ccMailAddresses.Add(new Recipient("", recipient.Trim())); } } newItem.CcRecipients = ccMailAddresses; List <Recipient> bccMailAddresses = new List <Recipient>(); if (textBox_Bcc.Text != "") { foreach (var recipient in textBox_Bcc.Text.Split(';')) { bccMailAddresses.Add(new Recipient("", recipient.Trim())); } } newItem.BccRecipients = bccMailAddresses; } catch (Exception ex) { throw new Exception("Invalid recipients. " + ex.Message, ex); } newItem.Subject = textBox_Subject.Text; newItem.Body.ContentType = (BodyType)comboBox_BodyType.SelectedIndex; newItem.Body.Content = textBox_Body.Text; newItem.Importance = (Importance)comboBox_Importance.SelectedIndex; newItem.IsDeliveryReceiptRequested = checkBox_RequestDeliveryReceipt.Checked; newItem.IsReadReceiptRequested = checkBox_RequestReadReceipt.Checked; newItem.Attachments = attachments; return(newItem); }
public static Models.EmailMessage MapFromNewDto(this NewEmailMessage from) { return(new Models.EmailMessage { Id = Guid.NewGuid(), Body = from.Body, Subject = from.Subject, Sender = from.Sender, Status = (int)EmailStatus.Pending, ToRecipients = string.Join(";", from.ToRecipients), To = from.To, Priority = from.Priority }); }
private void NewEmailButton_Click(object sender, EventArgs e) { ConversationModel conversation = ConversationList.SelectedConversation; if (conversation.Members.Where(obj => !obj.IsInternalUser).All(obj => obj.EmailAddresses.Count == 0)) { Dispatcher.Invoke(() => { _parent.Darkened = true; CustomMessageBox messageBox = new CustomMessageBox( "Nie można wysłać wiadomości. Żaden z członków konwersacji nie posiada adresu e-mail.", MessageBoxButton.OK); messageBox.OKButtonClicked += (s2, ea2) => { _parent.mainCanvas.Children.Remove(messageBox); _parent.Darkened = false; }; _parent.mainCanvas.Children.Add(messageBox); return; }); } if (!_parent.Persons.Find(obj => obj.Id == _parent.Client.UserInfo.PersonId).EmailAddresses.Any()) { Dispatcher.Invoke(() => { _parent.Darkened = true; CustomMessageBox messageBox = new CustomMessageBox( "Nie można utworzyć wiadomości. Twoje konto nie zawiera żadnego adresu e-mail", MessageBoxButton.OK); messageBox.OKButtonClicked += (s2, ea2) => { _parent.mainCanvas.Children.Remove(messageBox); _parent.Darkened = false; }; _parent.mainCanvas.Children.Add(messageBox); }); return; } _parent.Darkened = true; NewEmailMessage newMessage = new NewEmailMessage(conversation, _parent); newMessage.CancelButtonClicked += (s, ea) => { _parent.Darkened = false; _parent.mainCanvas.Children.Remove(newMessage); }; newMessage.ReadyButtonClicked += (s, ea) => { DoWorkEventHandler doWorkHandler = delegate(object se, DoWorkEventArgs ev) { try { this.Dispatcher.Invoke(() => { _parent.StatusBar.StatusText = "Wysyłanie wiadomości"; }); SmtpClient client = _parent.EmailClients.Find(obj => obj.Address == newMessage.SendingAddress) .SmtpClient; MailMessage mailMessage = new MailMessage(); mailMessage.From = new MailAddress(newMessage.SendingAddress); mailMessage.Subject = newMessage.OutputSubject; mailMessage.Body = newMessage.Message; foreach (PersonModel recipient in conversation.Members) { if (!recipient.IsInternalUser) { recipient.EmailAddresses.ForEach(obj => mailMessage.To.Add(new MailAddress(obj.Address))); } } foreach (FileModel file in newMessage.Attachments) { mailMessage.Attachments.Add(new Attachment(new MemoryStream(file.Data), file.Name)); } client.Send(mailMessage); ConversationMessageModel message = new ConversationMessageModel( _parent.Persons.Find(obj => obj.Id == _parent.Client.UserInfo.PersonId), DateTime.Now); message.PreviewImage = ImageHelper.GetHtmlImagePreview( newMessage.Message.Replace("\r\n", "<br>"), new Size(600, 60), new Size(600, 250)); message.PreviewImage.Freeze(); ConversationEmailMessageModel emailMessage = new ConversationEmailMessageModel(message, _parent.Persons.Find(obj => obj.Id == _parent.Client.UserInfo.PersonId) .EmailAddresses.Find(obj => obj.Address == newMessage.SendingAddress), newMessage.OutputSubject, newMessage.Message); foreach (FileModel file in newMessage.Attachments) { FileModel newFile = new FileModel(file.Id, file.Name, file.ContentType, file.Size, file.DateAdded) { ConversationId = conversation.Id, Data = file.Data }; emailMessage.Attachments.Add(newFile); } EventHandler <FileUploadedEventArgs> fileUploadedEventHandler = null; fileUploadedEventHandler = delegate(object s2, FileUploadedEventArgs ea2) { if (emailMessage.Attachments.All(obj => obj.Id != null)) { _parent.Client.AddNewMessage(conversation.Id, emailMessage); _parent.UploadClient.FileUploaded -= fileUploadedEventHandler; } }; if (!emailMessage.Attachments.Any(obj => obj.Id == null)) { this.Dispatcher.Invoke(() => { _parent.Client.AddNewMessage(conversation.Id, emailMessage); }); } else { _parent.UploadClient.FileUploaded += fileUploadedEventHandler; _parent.UploadClient.UploadFiles(emailMessage, emailMessage.Attachments.Where(obj => obj.Id == null).ToList()); } this.Dispatcher.Invoke(() => { _parent.StatusBar.StatusText = "Wysyłano wiadomość"; }); } catch (Exception ex) { MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace); ErrorHelper.LogError(ex); } }; _sendingWorker.DoWork += doWorkHandler; RunWorkerCompletedEventHandler runWorkerCompleted = null; runWorkerCompleted = delegate(object s2, RunWorkerCompletedEventArgs ev) { _sendingWorker.DoWork -= doWorkHandler; _sendingWorker.RunWorkerCompleted -= runWorkerCompleted; }; _sendingWorker.RunWorkerCompleted += runWorkerCompleted; _sendingWorker.RunWorkerAsync(); _parent.Darkened = false; _parent.mainCanvas.Children.Remove(newMessage); }; _parent.mainCanvas.Children.Add(newMessage); }
public async Task <IActionResult> PutMessage([FromBody] NewEmailMessage emailMessage) { var emailId = await _emailServiceLazy.Value.AddToQueueAsync(emailMessage); return(Ok(emailId)); }
public async Task <Guid> AddToQueueAsync(NewEmailMessage emailMessage) { return(await _emailMessageRepositoryLazy.Value.InsertMessageAsync(emailMessage)); }