예제 #1
0
        public bool Send(MessageDomainModel model)
        {
            var builder = new BodyBuilder
            {
                TextBody = model.BodyPlainText,
                HtmlBody = model.BodyHtmlText
            };

            if (!string.IsNullOrEmpty(model.ImagePath))
            {
                builder.Attachments.Add(model.ImagePath);
            }

            var message = new MimeMessage();

            message.From.Add(
                new MailboxAddress(
                    model.SenderInfoFullName,
                    model.FromEmail));

            message.To.Add(
                new MailboxAddress(
                    model.RecipientInfoFullName,
                    model.ToEmail));

            message.Subject = model.Subject;
            message.Body    = builder.ToMessageBody();

            using (var client = new SmtpClient())
            {
                // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
                //client.ServerCertificateValidationCallback = (object s, X509Certificate c, X509Chain h, SslPolicyErrors e) => true;

                client.Connect(Localhost, SmtpDefaultPort, false);

                // Note: since we don't have an OAuth2 token, disable
                // the XOAUTH2 authentication mechanism.
                client.AuthenticationMechanisms.Remove("XOAUTH2");

                // Note: only needed if the SMTP server requires authentication
                client.Authenticate(_login, _password);

                try
                {
                    client.Send(message);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                    return(false);
                }
                finally
                {
                    client.Disconnect(true);
                }
            }
            return(true);
        }
 /// <summary>
 /// Adds the message.
 /// </summary>
 /// <returns>int</returns>
 public int AddMessage(MessageDomainModel message)
 {
     try
     {
         return(_messageRepository.Add(_mapper.Map <MessageEntity>(message)));
     } catch (NotImplementedException)
     {
         return(0);
     }
 }
        public void Get_Message(MessageDomainModel message)
        {
            using (var scope = new DefaultScope())
            {
                // Arrange
                scope.MapperMock.Setup(x => x.Map <MessageApiModel>(It.IsAny <MessageDomainModel>()));
                scope.HelloWorldManagerMock.Setup(x => x.GetMessage()).Returns(message);

                // Act
                var result = scope.InstanceUnderTest.Message();

                // Assert
                Assert.IsType <OkObjectResult>(result);
            }
        }
예제 #4
0
        public void GetMessage(AppSettingsConfig appSettings, MessageDomainModel message, string expected)
        {
            using (var scope = new DefaultScope())
            {
                // Arrange
                scope.AppSettingsMock.Setup(x => x.Value).Returns(appSettings);
                scope.MapperMock.Setup(x => x.Map <MessageDomainModel>(It.IsAny <AppSettingsConfig>())).Returns(message);

                // Act
                var result = scope.InstanceUnderTest.GetMessage();

                // Assert
                Assert.Equal(expected, result.Message);
            }
        }
예제 #5
0
        private void RegisterControlsEvents()
        {
            passTextBox.TextChanged += (sender, args) => capsLockAlertLabel.Text =
                IsKeyLocked(Keys.CapsLock) ? "The Caps Lock Key is ON!" : string.Empty;

            messagesListView.Click += (sender, args) =>
            {
                int        selectedIndex = ((ListView)sender).SelectedItems[0].Index;
                MessageDTO dto           = _messageDTOs[selectedIndex];

                pop3FromTextBox.Text           = dto.FromEmail;
                pop3SenderFullNameTextBox.Text = dto.SenderInfoFullName;
                pop3SubjectTextBox.Text        = dto.Subject;
                pop3BodyRichTextBox.Text       = dto.BodyPlainText;
            };

            deleteEmailButton.Click += (sender, args) =>
            {
                Task.Run(() =>
                {
                    var mailAgentClient = new EmailClient(pop3LoginTextBox.Text, pop3PassTextBox.Text);

                    string messageUID = default(string);

                    if (messagesListView.InvokeRequired)
                    {
                        messagesListView.Invoke((MethodInvoker)(() =>
                        {
                            if (messagesListView.Items.Count == 0)
                            {
                                return;
                            }

                            messageUID = messagesListView
                                         .Items[messagesListView.SelectedIndices[0]]
                                         .SubItems[2]
                                         .Text;
                        }));
                    }
                    else
                    {
                        if (messagesListView.Items.Count == 0)
                        {
                            return;
                        }

                        messageUID = messagesListView
                                     .Items[messagesListView.SelectedIndices[0]]
                                     .SubItems[2]
                                     .Text;
                    }

                    mailAgentClient.DeleteMessageById(messageUID);

                    if (messagesListView.Items.Count > 0)
                    {
                        messagesListView.Items.RemoveAt(messagesListView.SelectedIndices[0]);
                    }
                });
            };

            attachImageButton.Click += (sender, args) =>
            {
                using (OpenFileDialog openFileDialog = new OpenFileDialog())
                {
                    openFileDialog.Filter = Resources.ImageExtensionsFilter;

                    _imagePath = openFileDialog.ShowDialog() == DialogResult.OK
                        ? openFileDialog.FileName
                        : string.Empty;
                }
            };

            sendButton.Click += (sender, args) =>
            {
                MessageDomainModel messageModel = new MessageDomainModel
                {
                    FromEmail = fromTextBox.Text,
                    ToEmail   = toTextBox.Text,
                    Subject   = subjectTextBox.Text,

                    BodyHtmlText = containsHtmlCheckBox.Checked
                        ? bodyRichTextBox.Text
                        : string.Empty,

                    BodyPlainText = containsHtmlCheckBox.Checked
                        ? Uglify.HtmlToText(bodyRichTextBox.Text).Code
                        : bodyRichTextBox.Text,

                    SenderInfoFullName    = senderFullNameTextBox.Text,
                    RecipientInfoFullName = recipientFullNameTextBox.Text,
                    ImagePath             = _imagePath
                };

                _imagePath = default(string);

                var mailAgentClient = new EmailClient(loginTextBox.Text, passTextBox.Text);

                try
                {
                    Task.Run(() => mailAgentClient.Send(messageModel));
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                    MessageBox.Show("Some errors occurred while sending your message. Sorry about that.");
                }
            };
            authenticationButton.Click += (sender, args) =>
            {
                Task.Run(() =>
                {
                    var mailAgentClient = new EmailClient(pop3LoginTextBox.Text, pop3PassTextBox.Text);
                    _messageDTOs        = mailAgentClient.GetAllMessages();

                    if (messagesListView.InvokeRequired)
                    {
                        messagesListView.Invoke((MethodInvoker)(() =>
                        {
                            messagesListView.BeginUpdate();

                            messagesListView.Items.Clear();
                            for (int i = 0; i < _messageDTOs.Count; i++)
                            {
                                var item = new ListViewItem($"{i + 1}");
                                item.SubItems.Add(_messageDTOs[i].Subject);
                                item.SubItems.Add(_messageDTOs[i].Id);
                                messagesListView.Items.Add(item);
                            }
                            messagesListView.EndUpdate();
                        }));
                    }
                    else
                    {
                        messagesListView.BeginUpdate();

                        messagesListView.Items.Clear();
                        for (int i = 0; i < _messageDTOs.Count; i++)
                        {
                            var item = new ListViewItem($"{i + 1}");
                            item.SubItems.Add(_messageDTOs[i].Subject);
                            item.SubItems.Add(_messageDTOs[i].Id);
                            messagesListView.Items.Add(item);
                        }
                        messagesListView.EndUpdate();
                    }
                });
            };

            viewAttachmentButton.Click += (sender, args) =>
            {
                Task.Run(() =>
                {
                    var mailAgentClient = new EmailClient(pop3LoginTextBox.Text, pop3PassTextBox.Text);
                    int selectedIndex   = default(int);
                    string messageUID   = default(string);

                    if (messagesListView.InvokeRequired)
                    {
                        messagesListView.Invoke((MethodInvoker)(() =>
                        {
                            selectedIndex = messagesListView.SelectedItems[0].Index;
                            messageUID = messagesListView
                                         .Items[selectedIndex]
                                         .SubItems[2]
                                         .Text;
                        }));
                    }
                    else
                    {
                        selectedIndex = messagesListView.SelectedItems[0].Index;
                        messageUID    = messagesListView
                                        .Items[selectedIndex]
                                        .SubItems[2]
                                        .Text;
                    }

                    try
                    {
                        string imagePath = mailAgentClient.GetImageAttachmentByMessageUID(messageUID);
                        Process.Start(imagePath);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("There is no attachment");
                    }
                });
            };
        }