Пример #1
0
        public void GetMail()
        {
            bool   isHtml = false;
            string c_name;
            int    team;

            Pop3Client client = new Pop3Client();

            client.Connect("pop.gmail.com", 995, true); //For SSL
            client.Authenticate("recent:[email protected]", "Edgemo2018",
                                AuthenticationMethod.UsernameAndPassword);

            int messageCount = client.GetMessageCount();

            for (int i = messageCount; i > 0; i--)
            {
                messageId = client.GetMessage(i).Headers.MessageId;
                OpenPop.Mime.Message msg = client.GetMessage(i);

                if (msg.FindFirstPlainTextVersion() == null)
                {
                    this.mailContent = msg.MessagePart.GetBodyAsText();
                    //Hvis teksten er i html, så står der true i isHtml collonnen.
                    //Bruges til at bestemme hvordan teksten skal håndteres.
                    isHtml = true;
                }
                else
                {
                    OpenPop.Mime.MessagePart plainTextPart = msg.FindFirstPlainTextVersion();
                    this.mailContent = plainTextPart.GetBodyAsText();
                    isHtml           = false;
                }
                //Sikrer at datetime er dansk tidszone


                timeStamp = (msg.Headers.DateSent).ToLocalTime();

                subjectLine = msg.Headers.Subject.ToString();
                mailAddress = msg.Headers.From.MailAddress.Address.ToString();

                if (MessageIdExists(messageId))
                {
                    break;
                }

                ////SE HER
                //Hvis vi kan nå at lave en FORM til denne, så er koden lavet. Læs nedenfor (try/catch eller andet for at fange fejlindtastning)
                if (!db.CustomerMailExists(mailAddress))
                {
                    int c_id = db.NewCustomer("Ukendt", mailAddress, 2);
                }

                ticketId = TicketIdInSubjectLine(subjectLine);
                db.InsertCorrespondence(ticketId, mailContent, timeStamp, subjectLine, mailAddress, isHtml, messageId);
                Console.WriteLine("Correspondence is added to ticket: " + ticketId);
            }
            Console.WriteLine("Alle nye mails er hermed registreret");
        }
Пример #2
0
        private void startReceive()
        {
            QuerysDb querysDb = new QuerysDb();
            var      emails   = querysDb.SelectEmails();

            for (int key = 0; key < emails.Rows.Count; key++)
            {
                if (!backList.Contains(emails.Rows[key][1].ToString()))
                {
                    if (!string.IsNullOrWhiteSpace(emails.Rows[key][1].ToString()))
                    {
                        mail_grid.Rows.Add(false, emails.Rows[key][3].ToString(), emails.Rows[key][4].ToString(), emails.Rows[key][5].ToString(), emails.Rows[key][6].ToString());
                        backList.Add(emails.Rows[key][1].ToString());
                    }
                }
            }

            Thread thread = new Thread(() => {
                try
                {
                    var client = new Pop3Client();
                    client.Connect("pop.mail.yahoo.com", 995, true);
                    client.Authenticate(Toemail, Topass);
                    var count = client.GetMessageCount();
                    OpenPop.Mime.Message message = client.GetMessage(count);
                    // var mailbody = ASCIIEncoding.ASCII.GetString(message.RawMessage);

                    StringBuilder builder = new StringBuilder();

                    OpenPop.Mime.MessagePart plainText = message.FindFirstPlainTextVersion();
                    if (plainText != null)
                    {
                        CreateDb.ExecuteSqlCommand($"INSERT INTO box_mail (dateId, mail_from, subject, body, tipo) VALUES('{message.Headers.Date.Trim()}','{message.Headers.From}','{message.Headers.Subject.Trim()}','{plainText.GetBodyAsText()}', 'text')");
                    }
                    else
                    {
                        // Might include a part holding html instead
                        OpenPop.Mime.MessagePart html = message.FindFirstHtmlVersion();
                        if (html != null)
                        {
                            CreateDb.ExecuteSqlCommand($"INSERT INTO box_mail (dateId, mail_from, subject, body, tipo) VALUES('{message.Headers.Date.Trim()}','{message.Headers.From}','{message.Headers.Subject.Trim()}','{html.GetBodyAsText()}', 'html')");
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    // corpo_email.AppendText(ex.Message + "\r\n");
                }
            })
            {
                IsBackground = true
            };

            thread.Start();
        }
Пример #3
0
        /* Function to retrive mails from pop3 and insert the data into the database. */
        public void InsertMail(Message mail)
        {
            /* Variable containing the SQLite commands needed to insert the data into the database */
            Debug.WriteLine("Insert mail to DB");
            string sql = "INSERT INTO mailInbox (sender,recipient,bc,cc,subject,message,datetime) " +
                         "VALUES (@sender,@recipient,@bc,@cc,@subject,@message,@datetime)";

            /* Variables created to contain data from the pop3/"real" mail. */
            string   message;
            string   sender    = mail.Headers.From.ToString();
            string   recipient = String.Join(",", mail.Headers.To);
            string   bc        = String.Join(",", mail.Headers.Bcc);
            string   cc        = String.Join(",", mail.Headers.Cc);
            string   subject   = mail.Headers.Subject;
            DateTime datetime  = mail.Headers.DateSent;

            Debug.WriteLine(datetime);

            /* check if the mail message if multilined. */
            if (!mail.MessagePart.IsMultiPart)
            {
                message = mail.MessagePart.GetBodyAsText();
            }
            else
            {
                OpenPop.Mime.MessagePart plainText = mail.FindFirstPlainTextVersion();
                message = plainText.GetBodyAsText();
            }

            /* Debug output */
            //Debug.WriteLine("Sender: " + sender);
            //Debug.WriteLine("Recipient: " + recipient);
            //Debug.WriteLine("Bc: " + bc);
            //Debug.WriteLine("Cc: " + cc);
            //Debug.WriteLine("Subject: " + subject);
            //Debug.WriteLine("Message: " + message);

            /* SQLite Commands to insert the data from the variables into the database */
            SQLiteCommand cmd = new SQLiteCommand(sql, DbConn);

            cmd.Parameters.AddWithValue("@sender", sender);
            cmd.Parameters.AddWithValue("@recipient", recipient);
            cmd.Parameters.AddWithValue("@bc", bc);
            cmd.Parameters.AddWithValue("@cc", cc);
            cmd.Parameters.AddWithValue("@subject", subject);
            cmd.Parameters.AddWithValue("@message", message);
            cmd.Parameters.AddWithValue("@datetime", datetime);
            //cmd.Parameters.AddWithValue("@attachment", mail.MessagePart.FileName);
            cmd.ExecuteNonQuery();
        }
Пример #4
0
        private void startReceive()
        {
            var client = new Pop3Client();

            client.Connect("pop.mail.yahoo.com", 995, true);
            client.Authenticate(Toemail, Topass);
            var count = client.GetMessageCount();

            OpenPop.Mime.Message message = client.GetMessage(count);
            // var mailbody = ASCIIEncoding.ASCII.GetString(message.RawMessage);
            OpenPop.Mime.MessagePart body = message.FindFirstPlainTextVersion();

            GetBody = body.GetBodyAsText();
        }
Пример #5
0
        public void InsertMail(Message mail)
        {
            Debug.WriteLine("Insert mail to DB");
            string sql = "INSERT INTO mailInbox (sender,recipient,bc,cc,subject,message) " +
                         "VALUES (@sender,@recipient,@bc,@cc,@subject,@message)";

            string message;
            string sender    = mail.Headers.From.ToString();
            string recipient = String.Join(",", mail.Headers.To);
            string bc        = String.Join(",", mail.Headers.Bcc);
            string cc        = String.Join(",", mail.Headers.Cc);
            string subject   = mail.Headers.Subject;

            if (!mail.MessagePart.IsMultiPart)
            {
                message = mail.MessagePart.GetBodyAsText();
            }
            else
            {
                OpenPop.Mime.MessagePart plainText = mail.FindFirstPlainTextVersion();
                message = plainText.GetBodyAsText();
            }

            /* Debug output */
            //Debug.WriteLine("Sender: " + sender);
            //Debug.WriteLine("Recipient: " + recipient);
            //Debug.WriteLine("Bc: " + bc);
            //Debug.WriteLine("Cc: " + cc);
            //Debug.WriteLine("Subject: " + subject);
            //Debug.WriteLine("Message: " + message);

            SQLiteCommand cmd = new SQLiteCommand(sql, DbConn);

            cmd.CommandText = sql;
            cmd.Parameters.AddWithValue("@sender", sender);
            cmd.Parameters.AddWithValue("@recipient", recipient);
            cmd.Parameters.AddWithValue("@bc", bc);
            cmd.Parameters.AddWithValue("@cc", cc);
            cmd.Parameters.AddWithValue("@subject", subject);
            cmd.Parameters.AddWithValue("@message", message);
            //cmd.Parameters.AddWithValue("@attachment", mail.MessagePart.FileName);
            cmd.ExecuteNonQuery();
        }
Пример #6
0
        void SaveMessageDB_HT_DacTrungNH(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument            xDoc = XDocument.Parse(mes);
                HT_DacTrungNguoiHien dt   = new HT_DacTrungNguoiHien(xDoc);
                if (dbht.GetDacTrungByID(dt.Id) == null)
                {
                    dbht.AddDacTrung(dt);
                }
                else
                {
                    dbht.EditDacTrung(dt.Id, dt);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #7
0
        void SaveMessageDB_HN_HoiBenh(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument  xDoc = XDocument.Parse(mes);
                HN_HoiBenh bn   = new HN_HoiBenh(xDoc);
                if (dbhn.GetHoiBenhByID(bn.Id) == null)
                {
                    dbhn.AddHoiBenh(bn);
                }
                else
                {
                    dbhn.EditHoiBenh(bn.Id, bn);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #8
0
        void SaveMessageDB_HN_ThongTinBenhNhan(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument xDoc = XDocument.Parse(mes);
                HN_ThongTinNguoiHienNoan nh = new HN_ThongTinNguoiHienNoan(xDoc);
                if (dbhn.GetInformationPatient(nh.MaBN) == null)
                {
                    dbhn.AddNewPatient(nh);
                }
                else
                {
                    dbhn.EditInformationPatient(nh.MaBN, nh);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #9
0
        void SaveMessageDB_HT_KQXN(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument          xDoc = XDocument.Parse(mes);
                HT_KetQuaXetNghiem kq   = new HT_KetQuaXetNghiem(xDoc);
                if (dbht.GetKetQuaXetNghiemByID(kq.Id) == null)
                {
                    dbht.AddKetQuaXetNghiem(kq);
                }
                else
                {
                    dbht.EditKetQuaXetNghiem(kq.Id, kq);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #10
0
        void SaveMessageDB_HT_ThongTinNguoiQuanHeBN(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument xDoc = XDocument.Parse(mes);
                HT_ThongTinNguoiQuanHeBN nqh = new HT_ThongTinNguoiQuanHeBN(xDoc);
                if (dbht.GetVoBNByID(nqh.Id) == null)
                {
                    dbht.AddVoBN(nqh.MaBN, nqh);
                }
                else
                {
                    dbht.EditVoBN(nqh.Id, nqh);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #11
0
        void SaveMessageDB_HT_TinhDichDo(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument     xDoc = XDocument.Parse(mes);
                HT_TinhDichDo tdd  = new HT_TinhDichDo(xDoc);
                if (dbht.GetTinhDichDoByID(tdd.Id) == null)
                {
                    dbht.AddTinhDichDo(tdd);
                }
                else
                {
                    dbht.EditTinhDichDo(tdd.Id, tdd);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #12
0
        void SaveMessageDB_HT_LuuTruMau(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument    xDoc = XDocument.Parse(mes);
                HT_LuuTruMau ltm  = new HT_LuuTruMau(xDoc);
                if (dbht.GetLuuTruMauByID(ltm.Id) == null)
                {
                    dbht.AddLuuTruMau(ltm);
                }
                else
                {
                    dbht.EditLuuTruMau(ltm.Id, ltm);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #13
0
        void SaveMessageDB_HT_NguoiVanDong(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument       xDoc = XDocument.Parse(mes);
                HT_NguoiVanDong nvd  = new HT_NguoiVanDong(xDoc);
                if (dbht.GetNguoiVanDongByID(nvd.Id) == null)
                {
                    dbht.AddNguoiVanDong(nvd);
                }
                else
                {
                    dbht.EditNguoiVanDong(nvd.Id, nvd);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #14
0
        void SaveMessageDB_HT_KhamNamKhoa(OpenPop.Mime.Message message)
        {
            try
            {
                string mes = message.FindFirstPlainTextVersion().GetBodyAsText();

                XDocument      xDoc = XDocument.Parse(mes);
                HT_KhamNamKhoa knk  = new HT_KhamNamKhoa(xDoc);
                if (dbht.GetKhamNamKhoaByID(knk.Id) == null)
                {
                    dbht.AddKhamNamKhoa(knk);
                }
                else
                {
                    dbht.EditKhamNamKhoa(knk.Id, knk);
                }

                SaveFile(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #15
0
        public static void FetchAllMessages(object sender, DoWorkEventArgs e)
        {
            // Add messages from pop3 server to message database
            try
            {
                // Makes a new POP3 session
                // POP3 does not allow to check for new mails
                // * facepalm *
                popClient.Disconnect();
                popClient.Connect(currentUser.pop_hostname, currentUser.pop_port, currentUser.pop_ssl);
                popClient.Authenticate(currentUser.mailaddress, currentUser.password);
            }
            catch (SystemException err)
            {
                MessageBox.Show("Kunne ikke genoprette en forbindelse" + Environment.NewLine + err.Message);
            }

            // gets messagecount
            int messageCount = popClient.GetMessageCount();

            // progress of process
            int progress = 0;

            // the progress value when it was sent to the progressbar
            int lastProgress = 0;

            for (int i = messageCount; i > 0; i--)
            {
                OpenPop.Mime.Message msg = popClient.GetMessage(i);

                // We don't like the fact about messageId is optional,
                // so we make our own messageID by a md5 of
                //  - the sender's email
                //  - the tick value (ticks since 1. January year 1)
                //  - md5 of messageID (if it doesnt present then = md5 of "")
                //  - subject of the mail
                string id      = genMd5(string.Format("{0}_{1}_{2}_{3}", msg.Headers.From.MailAddress.Address, msg.Headers.DateSent.Ticks.ToString(), genMd5(msg.Headers.MessageId), msg.Headers.Subject));
                string from    = msg.Headers.From.MailAddress.Address;
                string subject = msg.Headers.Subject;
                string body    = "";

                // We prefer multipart if it's available
                if (msg.MessagePart.IsMultiPart)
                {
                    body = msg.FindFirstHtmlVersion().GetBodyAsText();
                }
                else
                {
                    body = msg.FindFirstPlainTextVersion().GetBodyAsText();
                }

                // Date sent to SQLite DateTime format
                DateTime sent_o = msg.Headers.DateSent;
                string   sent   = string.Format("{0:d4}-{1:d2}-{2:d2} {3:d2}:{4:d2}:{5:d2}", sent_o.Year, sent_o.Month, sent_o.Day, sent_o.Hour, sent_o.Minute, sent_o.Second);

                // Insert it (or not, if it already exists) to the SQLite database
                SQLiteCommand crCMD = new SQLiteCommand("INSERT OR IGNORE INTO messagetable (id,sender,subject,body,date) VALUES (@_id,@_sender,@_subject,@_body,datetime(strftime('%Y-%m-%d %H:%M:%S',@_sent)))", msgSqlCon);

                crCMD.Parameters.AddWithValue("@_id", id);
                crCMD.Parameters.AddWithValue("@_sender", from);
                crCMD.Parameters.AddWithValue("@_subject", subject);
                crCMD.Parameters.AddWithValue("@_body", MerMail.Symmetric.EncryptString(currentUser.encryption_key, body));
                crCMD.Parameters.AddWithValue("@_sent", sent);

                crCMD.ExecuteNonQuery();

                // calculate the progress percentage
                progress = (i * 100) / (messageCount);
                if (progress > lastProgress + 10)
                {
                    // if the progress is 10 percent higher than lastprogress,
                    // then report it to the progressBar, and set lastprogress
                    // to the progress percentage right now
                    (sender as BackgroundWorker).ReportProgress(progress);
                    lastProgress = progress;
                }
            }
        }
Пример #16
0
        public void InsertMail(Message mail)
        {
            Debug.WriteLine("Insert mail to DB");
            string sql = "INSERT INTO mailInbox (sender,recipient,bc,cc,subject,message) " +
                "VALUES (@sender,@recipient,@bc,@cc,@subject,@message)";

            string message;
            string sender = mail.Headers.From.ToString();
            string recipient = String.Join(",", mail.Headers.To);
            string bc = String.Join(",", mail.Headers.Bcc);
            string cc = String.Join(",", mail.Headers.Cc);
            string subject =  mail.Headers.Subject;
            if (!mail.MessagePart.IsMultiPart)
            {
                message = mail.MessagePart.GetBodyAsText();
            }
            else
            {
                OpenPop.Mime.MessagePart plainText = mail.FindFirstPlainTextVersion();
                message = plainText.GetBodyAsText();
            }

            /* Debug output */
            //Debug.WriteLine("Sender: " + sender);
            //Debug.WriteLine("Recipient: " + recipient);
            //Debug.WriteLine("Bc: " + bc);
            //Debug.WriteLine("Cc: " + cc);
            //Debug.WriteLine("Subject: " + subject);
            //Debug.WriteLine("Message: " + message);

            SQLiteCommand cmd = new SQLiteCommand(sql, DbConn);
            cmd.CommandText = sql;
            cmd.Parameters.AddWithValue("@sender", sender);
            cmd.Parameters.AddWithValue("@recipient", recipient);
            cmd.Parameters.AddWithValue("@bc", bc);
            cmd.Parameters.AddWithValue("@cc", cc);
            cmd.Parameters.AddWithValue("@subject", subject);
            cmd.Parameters.AddWithValue("@message", message);
            //cmd.Parameters.AddWithValue("@attachment", mail.MessagePart.FileName);
            cmd.ExecuteNonQuery();
        }
Пример #17
0
        /* Function to retrive mails from pop3 and insert the data into the database. */
        public void InsertMail(Message mail)
        {
            /* Variable containing the SQLite commands needed to insert the data into the database */
            Debug.WriteLine("Insert mail to DB");
            string sql = "INSERT INTO mailInbox (sender,recipient,bc,cc,subject,message,datetime) " +
                "VALUES (@sender,@recipient,@bc,@cc,@subject,@message,@datetime)";

            /* Variables created to contain data from the pop3/"real" mail. */
            string message;
            string sender = mail.Headers.From.ToString();
            string recipient = String.Join(",", mail.Headers.To);
            string bc = String.Join(",", mail.Headers.Bcc);
            string cc = String.Join(",", mail.Headers.Cc);
            string subject =  mail.Headers.Subject;
            DateTime datetime = mail.Headers.DateSent;
            Debug.WriteLine(datetime);

            /* check if the mail message if multilined. */
            if (!mail.MessagePart.IsMultiPart)
            {
                message = mail.MessagePart.GetBodyAsText();
            }
            else
            {
                OpenPop.Mime.MessagePart plainText = mail.FindFirstPlainTextVersion();
                message = plainText.GetBodyAsText();
            }

            /* Debug output */
               //Debug.WriteLine("Sender: " + sender);
               //Debug.WriteLine("Recipient: " + recipient);
               //Debug.WriteLine("Bc: " + bc);
               //Debug.WriteLine("Cc: " + cc);
               //Debug.WriteLine("Subject: " + subject);
               //Debug.WriteLine("Message: " + message);

            /* SQLite Commands to insert the data from the variables into the database */
            SQLiteCommand cmd = new SQLiteCommand(sql, DbConn);
            cmd.Parameters.AddWithValue("@sender", sender);
            cmd.Parameters.AddWithValue("@recipient", recipient);
            cmd.Parameters.AddWithValue("@bc", bc);
            cmd.Parameters.AddWithValue("@cc", cc);
            cmd.Parameters.AddWithValue("@subject", subject);
            cmd.Parameters.AddWithValue("@message", message);
            cmd.Parameters.AddWithValue("@datetime", datetime);
            //cmd.Parameters.AddWithValue("@attachment", mail.MessagePart.FileName);
            cmd.ExecuteNonQuery();
        }
Пример #18
0
        private void LoadMassagesInDb(Message message, Pop3Client client, int i_msg)
        {
            string[] separator = new string[] { "\r\n", "\n" };

            MessageHeader  headers = client.GetMessageHeaders(i_msg);
            RfcMailAddress from    = headers.From;


            if (from.HasValidMailAddress && from.Address.Equals(this.mail_ppu))
            {
                if (message.Headers.Subject.Contains("_TEST"))
                {
                    Debug.WriteLine("MAIL_TS");
                    var mail_strings =
                        message.FindFirstPlainTextVersion()
                        .GetBodyAsText()
                        .Split(separator, StringSplitOptions.RemoveEmptyEntries)
                        .Select(s => s.Split(new[] { '=' }));

                    Dictionary <string, string> dict = new Dictionary <string, string>();
                    foreach (var item in mail_strings)
                    {
                        dict.Add(item[0], item[1]);
                    }

                    using (var context = new db_sqlceEntities())
                    {
                        try
                        {
                            var package_ts = new package_ts()
                            {
                                pt            = "/home/ts",
                                na            = dict["na"],
                                r1            = Convert.ToInt32(dict["r1"]),
                                r2            = Convert.ToInt32(dict["r2"]),
                                pw1           = Convert.ToInt32(dict["pw1"]),
                                pw2           = Convert.ToInt32(dict["pw2"]),
                                gp            = Convert.ToInt32(dict["gp"]),
                                te            = Convert.ToInt32(dict["te"]),
                                vc            = Convert.ToInt32(dict["vc"]),
                                vg            = Convert.ToInt32(dict["vg"]),
                                ti            = Convert.ToInt32(dict["ti"]),
                                sn1           = dict["sn1"],
                                sn2           = dict["sn2"],
                                mail_uid      = client.GetMessageUid(i_msg),
                                ismail        = true,
                                da            = DateTime.ParseExact(dict["da"], "yyMMdd", null).Date,
                                date_time_inc = DateTime.Now
                            };
                            context.package_ts.Add(package_ts);
                            context.SaveChanges();
                        }

                        catch (DbEntityValidationException ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                    }
                    log.Write(message.FindFirstPlainTextVersion()
                              .GetBodyAsText());
                }

                if (message.Headers.Subject.Contains("_TM"))
                {
                    Debug.WriteLine("MAIL_TM");
                    var mail_strings =
                        message.FindFirstPlainTextVersion()
                        .GetBodyAsText()
                        .Split(separator, StringSplitOptions.RemoveEmptyEntries)
                        .Select(s => s.Split(new[] { '=' }));

                    Dictionary <string, string> dict = new Dictionary <string, string>();
                    foreach (var item in mail_strings)
                    {
                        dict.Add(item[0], item[1]);
                    }

                    using (var context = new db_sqlceEntities())
                    {
                        try
                        {
                            var package_tm = new package_tm()
                            {
                                pt       = "/home/tm",
                                na       = dict["na"],
                                ismail   = true,
                                mail_uid = client.GetMessageUid(i_msg),
                                date_inc = DateTime.Now
                            };
                            context.package_tm.Add(package_tm);
                            context.SaveChanges();
                        }

                        catch (DbEntityValidationException ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                    }
                }

                if (message.Headers.Subject.Contains("_ON"))
                {
                    Debug.WriteLine("MAIL_ON");

                    var mail_strings =
                        message.FindFirstPlainTextVersion()
                        .GetBodyAsText()
                        .Trim()
                        .Split(separator, StringSplitOptions.RemoveEmptyEntries)
                        .Select(s => s.Split(new[] { '=' }));

                    Dictionary <string, string> dict = new Dictionary <string, string>();
                    foreach (var item in mail_strings)
                    {
                        dict.Add(item[0], item[1]);
                    }

                    using (var context = new db_sqlceEntities())
                    {
                        try
                        {
                            var package_on = new package_on()
                            {
                                pt            = "/home/on",
                                na            = dict["na"],
                                r1            = Convert.ToInt32(dict["r1"]),
                                r2            = Convert.ToInt32(dict["r2"]),
                                pw1           = Convert.ToInt32(dict["pw1"]),
                                pw2           = Convert.ToInt32(dict["pw2"]),
                                gp            = Convert.ToInt32(dict["gp"]),
                                te            = Convert.ToInt32(dict["te"]),
                                vc            = Convert.ToInt32(dict["vc"]),
                                vg            = Convert.ToInt32(dict["vg"]),
                                ti            = Convert.ToInt32(dict["ti"]),
                                sn1           = dict["sn1"],
                                sn2           = dict["sn2"],
                                mail_uid      = client.GetMessageUid(i_msg),
                                ismail        = true,
                                da            = DateTime.ParseExact(dict["da"], "yyMMdd", null).Date,
                                date_time_inc = DateTime.Now
                            };
                            context.package_on.Add(package_on);
                            context.SaveChanges();
                        }

                        catch (DbEntityValidationException ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                    }
                    log.Write(message.FindFirstPlainTextVersion()
                              .GetBodyAsText());
                }

                if (message.Headers.Subject.Contains("_AL"))
                {
                    Debug.WriteLine("MAIL_AL");
                    var mail_strings =
                        message.FindFirstPlainTextVersion()
                        .GetBodyAsText()
                        .Split(separator, StringSplitOptions.RemoveEmptyEntries)
                        .Select(s => s.Split(new[] { '=' }));

                    Dictionary <string, string> dict = new Dictionary <string, string>();
                    foreach (var item in mail_strings)
                    {
                        dict.Add(item[0], item[1]);
                    }

                    var wr_txt = "";
                    var war    = Convert.ToInt32(dict["w"]);
                    switch (war)
                    {
                    case (0):
                        wr_txt = "Вскрыте крышки!";
                        break;

                    case (1):
                        wr_txt = "Расход за час для первого счетчика больше предельного!";
                        break;

                    case (2):
                        wr_txt = "Расход за час для второго счетчика больше предельного!";
                        break;
                    }

                    using (var context = new db_sqlceEntities())
                    {
                        try
                        {
                            var package_al = new package_al()
                            {
                                pt       = "/home/wr",
                                na       = dict["na"],
                                wr       = war,
                                date_inc = DateTime.Now,
                                ismail   = true,
                                mail_uid = client.GetMessageUid(i_msg),
                                wr_txt   = wr_txt
                            };
                            context.package_al.Add(package_al);
                            context.SaveChanges();
                        }

                        catch (DbEntityValidationException ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                    }
                }

                if (message.Headers.Subject.Contains("_Data"))
                {
                    Debug.WriteLine("MAIL_IZ");
                    var mail_strings =
                        message.FindFirstPlainTextVersion()
                        .GetBodyAsText()
                        .Trim()
                        .Split(separator, StringSplitOptions.RemoveEmptyEntries)
                        .Select(s => s.Split(new[] { '=' }));
                    Dictionary <string, string> dict = mail_strings.ToDictionary(item => item[0], item => item[1]);



                    using (var context = new db_sqlceEntities())
                    {
                        try
                        {
                            string rw_1 = dict["r1"].Substring(0, 8);
                            string rw_2 = dict["r2"].Substring(0, 8);

                            string r1 = dict["r1"].Substring(8, 96);
                            string r2 = dict["r2"].Substring(8, 96);

                            // r1 = r1.Replace('g', '0');
                            // r2 = r2.Replace('g', '0');



                            r1 = Regex.Replace(r1, @"([^0-9])(\d){3}", "0000");
                            r2 = Regex.Replace(r2, @"([^0-9])(\d){3}", "0000");
                            IEnumerable <string> groups1 = Enumerable.Range(0, r1.Length / 4)
                                                           .Select(i => r1.Substring(i * 4, 4));
                            List <int> rw1 = new List <int>();
                            foreach (var grp in groups1)
                            {
                                rw1.Add(Convert.ToInt32(grp));
                            }

                            IEnumerable <string> groups2 = Enumerable.Range(0, r2.Length / 4)
                                                           .Select(i => r2.Substring(i * 4, 4));
                            List <int> rw2 = new List <int>();
                            foreach (var grp in groups2)
                            {
                                rw2.Add(Convert.ToInt32(grp));
                            }

                            string ppu_na = null;
                            if (!string.IsNullOrEmpty(dict["na"]))
                            {
                                ppu_na = dict["na"];
                            }
                            var package_iz = new package_iz()
                            {
                                pt    = "/home/iz",
                                na    = dict["na"],
                                r1    = Convert.ToInt32(rw_1),
                                r1_0  = Convert.ToInt32(groups1.ElementAt(0)),
                                r1_1  = Convert.ToInt32(groups1.ElementAt(1)),
                                r1_2  = Convert.ToInt32(groups1.ElementAt(2)),
                                r1_3  = Convert.ToInt32(groups1.ElementAt(3)),
                                r1_4  = Convert.ToInt32(groups1.ElementAt(4)),
                                r1_5  = Convert.ToInt32(groups1.ElementAt(5)),
                                r1_6  = Convert.ToInt32(groups1.ElementAt(6)),
                                r1_7  = Convert.ToInt32(groups1.ElementAt(7)),
                                r1_8  = Convert.ToInt32(groups1.ElementAt(8)),
                                r1_9  = Convert.ToInt32(groups1.ElementAt(9)),
                                r1_10 = Convert.ToInt32(groups1.ElementAt(10)),
                                r1_11 = Convert.ToInt32(groups1.ElementAt(11)),
                                r1_12 = Convert.ToInt32(groups1.ElementAt(12)),
                                r1_13 = Convert.ToInt32(groups1.ElementAt(13)),
                                r1_14 = Convert.ToInt32(groups1.ElementAt(14)),
                                r1_15 = Convert.ToInt32(groups1.ElementAt(15)),
                                r1_16 = Convert.ToInt32(groups1.ElementAt(16)),
                                r1_17 = Convert.ToInt32(groups1.ElementAt(17)),
                                r1_18 = Convert.ToInt32(groups1.ElementAt(18)),
                                r1_19 = Convert.ToInt32(groups1.ElementAt(19)),
                                r1_20 = Convert.ToInt32(groups1.ElementAt(20)),
                                r1_21 = Convert.ToInt32(groups1.ElementAt(21)),
                                r1_22 = Convert.ToInt32(groups1.ElementAt(22)),
                                r1_23 = Convert.ToInt32(groups1.ElementAt(23)),
                                // r1_24 = Convert.ToInt32(groups1.ElementAt(24)),

                                r2    = Convert.ToInt32(rw_2),
                                r2_0  = Convert.ToInt32(groups2.ElementAt(0)),
                                r2_1  = Convert.ToInt32(groups2.ElementAt(1)),
                                r2_2  = Convert.ToInt32(groups2.ElementAt(2)),
                                r2_3  = Convert.ToInt32(groups2.ElementAt(3)),
                                r2_4  = Convert.ToInt32(groups2.ElementAt(4)),
                                r2_5  = Convert.ToInt32(groups2.ElementAt(5)),
                                r2_6  = Convert.ToInt32(groups2.ElementAt(6)),
                                r2_7  = Convert.ToInt32(groups2.ElementAt(7)),
                                r2_8  = Convert.ToInt32(groups2.ElementAt(8)),
                                r2_9  = Convert.ToInt32(groups2.ElementAt(9)),
                                r2_10 = Convert.ToInt32(groups2.ElementAt(10)),
                                r2_11 = Convert.ToInt32(groups2.ElementAt(11)),
                                r2_12 = Convert.ToInt32(groups2.ElementAt(12)),
                                r2_13 = Convert.ToInt32(groups2.ElementAt(13)),
                                r2_14 = Convert.ToInt32(groups2.ElementAt(14)),
                                r2_15 = Convert.ToInt32(groups2.ElementAt(15)),
                                r2_16 = Convert.ToInt32(groups2.ElementAt(16)),
                                r2_17 = Convert.ToInt32(groups2.ElementAt(17)),
                                r2_18 = Convert.ToInt32(groups2.ElementAt(18)),
                                r2_19 = Convert.ToInt32(groups2.ElementAt(19)),
                                r2_20 = Convert.ToInt32(groups2.ElementAt(20)),
                                r2_21 = Convert.ToInt32(groups2.ElementAt(21)),
                                r2_22 = Convert.ToInt32(groups2.ElementAt(22)),
                                r2_23 = Convert.ToInt32(groups2.ElementAt(23)),
                                //r2_24 = Convert.ToInt32(groups2.ElementAt(24)),

                                pw1      = Convert.ToInt32(dict["pw1"]),
                                pw2      = Convert.ToInt32(dict["pw2"]),
                                gp       = Convert.ToInt32(dict["gp"]),
                                te       = dict["te"],
                                vc       = Convert.ToInt32(dict["vc"]),
                                vg       = Convert.ToInt32(dict["vg"]),
                                ti       = Convert.ToInt32(dict["ti"]),
                                sn1      = dict["sn1"],
                                sn2      = dict["sn2"],
                                da       = DateTime.ParseExact(dict["da"], "yyMMdd", null).Date,
                                ismail   = true,
                                mail_uid = client.GetMessageUid(i_msg),
                                date_inc = DateTime.Now
                            };
                            context.package_iz.Add(package_iz);
                            context.SaveChanges();

                            var qu = context.counters.FirstOrDefault(c => c.serial_amspi == ppu_na);

                            if (qu != null)
                            {
                                qu.serial_r1 = dict["sn1"];
                                qu.serial_r2 = dict["sn2"];
                                context.SaveChanges();
                            }
                        }

                        catch (DbEntityValidationException ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                    }
                    log.Write(message.FindFirstPlainTextVersion()
                              .GetBodyAsText());
                }
            }
        }
Пример #19
0
        protected void PrepararCorreo()
        {
            try
            {
                using (CobranzasDataContext db = new CobranzasDataContext())
                {
                    idOperador.Value = Request["idOperador"];//Sesion.idOperador.ToString();
                    int id   = Convert.ToInt32(Request["idCorreo"]);
                    int Tipo = Convert.ToInt32(Request["Tipo"]);
                    idCorreo.Value = id.ToString();
                    Entidades.Correos Correo = db.Correos.Single(x => x.idCorreo == id);
                    try
                    {
                        List <Entidades.Correos> CorreoAnterior;
                        List <Entidades.Correos> CorreoSiguiente;
                        if (Tipo == 1)
                        {
                            CorreoSiguiente = db.Correos.Where(x => x.idOperador == Correo.idOperador && x.FechaCreacion < Correo.FechaCreacion && x.TipoEspecial == null && !x.Correos_Personas.Any() && x.RutaEml != null).OrderByDescending(x => x.FechaCreacion).Take(1).ToList();
                            CorreoAnterior  = db.Correos.Where(x => x.idOperador == Correo.idOperador && x.FechaCreacion > Correo.FechaCreacion && x.TipoEspecial == null && !x.Correos_Personas.Any() && x.RutaEml != null).OrderBy(x => x.FechaCreacion).Take(1).ToList();
                        }
                        else if (Tipo == 2)
                        {
                            CorreoSiguiente = db.Correos.Where(x => x.idOperador == Correo.idOperador && x.FechaCreacion < Correo.FechaCreacion && x.Correos_Personas.Any() && x.RutaEml != null && !x.Leido).OrderByDescending(x => x.FechaCreacion).Take(1).ToList();
                            CorreoAnterior  = db.Correos.Where(x => x.idOperador == Correo.idOperador && x.FechaCreacion > Correo.FechaCreacion && x.Correos_Personas.Any() && x.RutaEml != null && !x.Leido).OrderBy(x => x.FechaCreacion).Take(1).ToList();
                        }
                        else
                        {
                            CorreoSiguiente = new List <Entidades.Correos>();
                            CorreoAnterior  = new List <Entidades.Correos>();
                        }

                        if (CorreoSiguiente.Count == 0)
                        {
                            lnkSiguiente.Visible = false;
                        }
                        else
                        {
                            lnkSiguiente.HRef = "ctrlCorreo.aspx?idCorreo=" + CorreoSiguiente.First().idCorreo + "&idOperador=" + idOperador.Value + "&Tipo=" + Tipo;
                        }
                        if (CorreoAnterior.Count == 0)
                        {
                            lnkAnterior.Visible = false;
                        }
                        else
                        {
                            lnkAnterior.HRef = "ctrlCorreo.aspx?idCorreo=" + CorreoAnterior.First().idCorreo + "&idOperador=" + idOperador.Value + "&Tipo=" + Tipo;
                        }
                    }
                    catch { }
                    Correo.Leido = true;
                    db.SubmitChanges();
                    lblAsunto.Text                   = Correo.Asunto;
                    lblDestinatarios.Text            = Server.HtmlEncode(Correo.Destinatarios);
                    lblDestinatariosCopia.Text       = Server.HtmlEncode(Correo.DestinatariosCopia);
                    lblDestinatariosCopiaOculta.Text = Server.HtmlEncode(Correo.DestinatariosCopiaOculta);
                    lblFecha.Text = Correo.FechaCreacion.ToString("dd/MM/yyyy HH:mm:ss tt");
                    String Mensaje = "";
                    //Boolean isHTML = true;
                    if (Correo.Mensaje != null)
                    {
                        Mensaje = Correo.Mensaje;
                    }
                    if (Correo.RutaEml != null)
                    {
                        List <String>            NoAdjuntos = new List <string>();
                        String                   Ruta       = db.Parametros.Single(x => x.Clave == "RutaCorreos").Valor;
                        OpenPop.Mime.Message     m          = OpenPop.Mime.Message.Load(new System.IO.FileInfo(Ruta + Correo.RutaEml + ".eml"));
                        OpenPop.Mime.MessagePart Parte      = m.FindFirstHtmlVersion();
                        if (Parte == null)
                        {
                            Parte = m.FindFirstPlainTextVersion();
                        }
                        Mensaje = Parte.GetBodyAsText();
                        //isHTML = !m.MessagePart.IsText;
                        if (Parte.ContentType.MediaType.ToLower() == "text/plain")
                        {
                            Mensaje = "<pre>" + Mensaje + "</pre>";
                        }
                        try
                        {
                            foreach (Match Match in Regex.Matches(Mensaje, "\"(cid:(\\S+))\""))
                            {
                                //Debug.Print(Match.ToString());
                                String ID = Match.Groups[2].Value;
                                NoAdjuntos.Add(ID);
                                try
                                {
                                    OpenPop.Mime.MessagePart Parte2 = BuscarParte(ID, m.MessagePart);
                                    String Ext = Parte2.FileName;
                                    try
                                    {
                                        Ext = Ext.Substring(Ext.LastIndexOf("."));
                                    }
                                    catch
                                    {
                                        Ext = "";
                                    }
                                    String Ruta2 = Guardar(Parte2, id.ToString());
                                    //Parte2.Save(new FileInfo(MapPath(Ruta2)));
                                    Mensaje = Mensaje.Replace(Match.Groups[0].Value, "\"" + Ruta2 + "\"");
                                }
                                catch { }
                            }
                            foreach (OpenPop.Mime.MessagePart Adjunto in m.FindAllAttachments())
                            {
                                if (NoAdjuntos.Contains(Adjunto.ContentId))
                                {
                                    continue;
                                }
                                String Ruta2 = Guardar(Adjunto, id.ToString());
                                lblAdjuntos.Text += String.Format(@"</span><a href=""{0}"" title=""{2}"" target=""_blank"" class=""AdjuntoSL"">{1}</a><span>", Ruta2, Adjunto.ContentDisposition.FileName ?? "Adjunto", Adjunto.ContentDescription);
                            }
                        }
                        catch { }
                    }
                    //lblAdjuntos.Text=@"</span><a href=""http://www.google.com"" target=""_blank"" class=""Adjunto"">aquí</a><span>";
                    lblRemitente.Text = Correo.Remitente;
                    try
                    {
                        String RutaCorreo = (@"/Temp/Correo" + id.ToString() + (true ? ".html" : ".txt"));
                        iframe.Attributes["src"] = RutaCorreo;
                        File.WriteAllText(MapPath(RutaCorreo), Mensaje, System.Text.Encoding.UTF8);
                    }
                    catch { }
                }
            }
            catch (Exception Ex)
            {
                Ex.Registrar();
            }
        }
Пример #20
0
        private void listBoxMails_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Check if the value should be ignored, in this case if it is below zero.
            if (listBoxMails.SelectedIndex < 0)
                return;

            // Retrieve the selected mail from the database.
            mailMessage = mailDatabase.ReadMail(textBoxMail.Text, listBoxMails.Items.Count - listBoxMails.SelectedIndex);

            // Check if an html format is present.
            if (mailMessage.FindFirstHtmlVersion() != null)
                // Show the html format in the webbrowser.
                webBrowserView.DocumentText = mailMessage.FindFirstHtmlVersion().GetBodyAsText();
            // Check if an text format is present.
            else if (mailMessage.FindFirstPlainTextVersion() != null)
                // Show the text format in the webbrowser.
                webBrowserView.DocumentText = mailMessage.FindFirstPlainTextVersion().GetBodyAsText();
            else
                // If nothing is found then output that something is wrong.
                webBrowserView.DocumentText = "Problems showing this mail, Contact Simon :-)";
        }