示例#1
0
        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);
        }
示例#2
0
        public async Task <Guid> InsertMessageAsync(NewEmailMessage newEmailMessage)
        {
            var entity = newEmailMessage.MapFromNewDto();

            _dbContext.Value.EmailMessages.Add(entity);
            await _dbContext.Value.SaveChangesAsync();

            return(entity.Id);
        }
示例#3
0
        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
     });
 }
示例#5
0
        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);
        }
示例#6
0
        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));
 }