public void DeleteMailboxMessage(int id)
        {
            MailboxMessage mailboxMessage = db.MailboxMessages.FirstOrDefault(m => m.ID == id);

            db.MailboxMessages.Remove(mailboxMessage);
            db.SaveChanges();
        }
Пример #2
0
        private void Work()
        {
            if (_mailbox.ReceiveMessage() != MailboxMessage.Start)
            {
                throw new InvalidOperationException("Audio Processor Start message was invalid!");
            }

            _mailbox.SendResponse(MailboxMessage.Start);
            _mailbox.SendResponse(MailboxMessage.RenderEnd);

            Logger.Info?.Print(LogClass.AudioRenderer, "Starting audio processor");

            while (true)
            {
                _pauseEvent?.WaitOne();

                MailboxMessage message = _mailbox.ReceiveMessage();

                if (message == MailboxMessage.Stop)
                {
                    break;
                }

                if (message == MailboxMessage.RenderStart)
                {
                    long startTicks = PerformanceCounter.ElapsedNanoseconds;

                    for (int i = 0; i < _sessionCommandList.Length; i++)
                    {
                        if (_sessionCommandList[i] != null)
                        {
                            _sessionCommandList[i].CommandList.Process(OutputDevices[i]);
                            _sessionCommandList[i].CommandList.Dispose();
                            _sessionCommandList[i] = null;
                        }
                    }

                    long endTicks = PerformanceCounter.ElapsedNanoseconds;

                    long elapsedTime = endTicks - startTicks;

                    if (Constants.AudioProcessorMaxUpdateTime < elapsedTime)
                    {
                        Logger.Debug?.Print(LogClass.AudioRenderer, $"DSP too slow (exceeded by {elapsedTime - Constants.AudioProcessorMaxUpdateTime}ns)");
                    }

                    _mailbox.SendResponse(MailboxMessage.RenderEnd);
                }
            }

            Logger.Info?.Print(LogClass.AudioRenderer, "Stopping audio processor");
            _mailbox.SendResponse(MailboxMessage.Stop);
        }
 public MailboxMessage AddMailboxMessage(MailboxMessage mailboxMessage)
 {
     try
     {
         mailboxMessage.Date     = DateTime.Now;
         mailboxMessage.IsReaden = false;
         db.MailboxMessages.Add(mailboxMessage);
         db.SaveChanges();
         return(mailboxMessage);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        public MailboxMessage sendContactUs(MailboxMessage mess)
        {
            Admin admin = db.Admins.FirstOrDefault();

            if (admin == null)
            {
                return(null);
            }
            MailAddress mail_to   = new MailAddress(admin.Email, admin.FirstName + " " + admin.LastName); //the email address of the receiver
            MailAddress mail_from = new MailAddress(mess.FromEmail, mess.FromName);                       //the email address of the receiver

            MailMessage message = new MailMessage(mail_from, mail_to);

            message.Subject = mess.Topic;
            message.Body    = mess.Content;

            send(message);
            return(mess);
        }
Пример #5
0
        private void StartSession()
        {
            Debug.WriteLine("Connection accepted!");

            _sslStream = CreateSslStream(_networkStream);

            SendFormat("220 {0} SMTP server ready.", "localhost");
            string response = ReadResponse();

            if (!response.StartsWith("HELO") && !response.StartsWith("EHLO"))
            {
                Send("500 UNKNOWN COMMAND");
                _networkStream.Close();
                return;
            }
            string remoteServer = response.Replace("HELO", string.Empty).Replace("EHLO", string.Empty).Trim();

            Send("250-localhost");



            Send("250 AUTH LOGIN PLAIN CRAM-MD5");
            response = ReadResponse();
            string username = null;

            if (response.ToUpper() == "AUTH LOGIN")
            {
                Send("334 VXNlcm5hbWU6");

                var encodedUsername = ReadResponse();
                username = GetUsername(encodedUsername);

                Send("334 UGFzc3dvcmQ6");
                var passwordResponse = ReadResponse();
                var password         = GetUsername(passwordResponse);

                SessionMailBox = VerifyUser(username, password);

                if (SessionMailBox != null)
                {
                    Send("235 OK, GO AHEAD");
                }
                else
                {
                    Send("500 Bad Username or Password");
                    _networkStream.Close();
                    return;
                }
            }

            MailMessage emailMessage = new MailMessage()
            {
                Sent = DateTime.UtcNow
            };

            do
            {
                var senderMessage = ReadResponse();

                if (!senderMessage.StartsWith("MAIL FROM:"))
                {
                    emailMessage.From = response;
                    Send("500 UNKNOWN COMMAND");
                    _networkStream.Close();
                    return;
                }
                else
                {
                    var recipient = senderMessage.Replace("MAIL FROM:", string.Empty).Trim();
                    SendFormat("250 Go ahead with message for {0}", recipient);
                }

                var recipientMessage = ReadResponse();

                do
                {
                    if (!recipientMessage.StartsWith("RCPT TO:"))
                    {
                        emailMessage.To = response;
                        Send("500 UNKNOWN COMMAND");
                        _networkStream.Close();
                        return;
                    }
                    else
                    {
                        var sender = recipientMessage.Replace("MAIL FROM:", string.Empty).Trim();
                        SendFormat("250 {0} I like that guy too!", sender);
                    }

                    recipientMessage = ReadResponse();
                }while (recipientMessage.Trim() != "DATA");


                Send("354 Enter message. When finished, enter \".\" on a line by itself");

                int           counter = 0;
                StringBuilder message = new StringBuilder();

                while ((response = ReadResponse().Trim()) != ".")
                {
                    message.AppendLine(response);
                    counter++;

                    if (counter == 1000000)
                    {
                        _networkStream.Close();
                        return;
                    }
                }

                Console.WriteLine("Received message:");
                Send("250 OK");

                response = ReadResponse();

                var messageBody = message.ToString();

                string uri = MailStorage.Save(username, messageBody);

                using (var stream = MailStorage.GetStream(messageBody))
                {
                    var           parser        = new MimeParser(stream);
                    var           parsedMessage = parser.ParseMessage();
                    HeaderList    headers       = parsedMessage.Headers;
                    StringBuilder headerBuilder = new StringBuilder();

                    foreach (var header in headers)
                    {
                        headerBuilder.AppendLine(header.ToString());
                    }
                    var headerText  = headerBuilder.ToString();
                    var messageText = parsedMessage.GetTextBody(MimeKit.Text.TextFormat.Text);

                    if (messageText != null)
                    {
                        messageText = messageText.Substring(0, 200);
                    }

                    MailboxMessage mmbm = new MailboxMessage
                    {
                        MailboxId  = SessionMailBox.MailBoxId,
                        MessageId  = parsedMessage.MessageId,
                        Body       = messageText,
                        RawHeader  = headerText,
                        MessageUrl = uri,
                        Recieved   = DateTime.UtcNow,
                        IsRead     = false
                    };

                    SqlServerMailboxRepositry.AddMailMessage(SessionMailBox, mmbm);
                }

                if (response.ToUpper() == "RSET")
                {
                    Send("250 OK");
                }
            }while (response.ToUpper() == "RSET");
            {
                _networkStream.Close();
            }
        }
 public void EditMailboxMessage(MailboxMessage mailboxMessage)
 {
 }
 public MailboxMessage sendMailToAdmin([FromBody()] MailboxMessage message)
 {
     mailboxMessageService.AddMailboxMessage(message);
     return(sendMailService.sendContactUs(message));
 }