Exemplo n.º 1
0
 public int Update(MailTable entityToInsert)
 {
     using (Conn)
     {
         return(Conn.Update(entityToInsert));
     }
 }
Exemplo n.º 2
0
 public int Delete(MailTable entityToInsert)
 {
     using (Conn)
     {
         return(Conn.Delete(entityToInsert));
     }
 }
Exemplo n.º 3
0
 public Guid Insert(MailTable entityToInsert)
 {
     using (Conn)
     {
         return(Conn.Insert <Guid>(entityToInsert));
     }
 }
Exemplo n.º 4
0
        public override void ExecuteCommand(MailSession session, StringRequestInfo requestInfo)
        {
            MailTable         mailTable         = JsonConvert.DeserializeObject <MailTable>(requestInfo.Body);
            MailServerManager mailServerManager = new MailServerManager();

            mailTable.MailFileStorageName = mailServerManager.GetMailFileStorageName(mailTable.MailFileName);

            //var DesSessions = session.AppServer.GetSessions(_ => _.RemoteEndPoint.Address.ToString() == mailTable.ReceiverIP);
            //if (DesSessions == null || DesSessions.Count() <= 0)//不包含,返回错误
            //{
            //    session.TrySend(MailServerCommand.MailSendResponse.ToString() + " " + JsonConvert.SerializeObject(new { Result = false, Message = string.Format("找不到收件人{0}", mailTable.Receiver) }) + "\r\n");
            //    return;
            //}

            try
            {
                mailServerManager.SaveMail(mailTable);
                session.TrySend(MailServerCommand.MailSendResponse.ToString() + " " + JsonConvert.SerializeObject(new { Result = true, Message = "邮件已发送" }) + "\r\n");
            }
            catch
            {
                session.TrySend(MailServerCommand.MailSendResponse.ToString() + " " + JsonConvert.SerializeObject(new { Result = false, Message = "邮件服务器出错,请联系技术人员" }) + "\r\n");
                return;
            }

            //转发邮件给目标用户
            foreach (var item in session.AppServer.GetSessions(_ => _.RemoteEndPoint.Address.ToString() == mailTable.ReceiverIP))
            {
                string msg = MailServerCommand.NewMail.ToString() + "\r\n";
                item.TrySend(msg);
            }
        }
Exemplo n.º 5
0
        public void deleteSentmail(int mail_id)
        {
            MailTable mailTable = new MailTable()
            {
                mail_ID = mail_id, sender_delete_status = "true"
            };

            _context.mail_table.Attach(mailTable);
            _context.Entry(mailTable).Property(x => x.sender_delete_status).IsModified = true;
            _context.SaveChanges();
        }
Exemplo n.º 6
0
        public void changeMailStatus(int mail_id)
        {
            MailTable mailTable = new MailTable()
            {
                mail_ID = mail_id, mail_status = "read"
            };

            _context.mail_table.Attach(mailTable);
            _context.Entry(mailTable).Property(x => x.mail_status).IsModified = true;
            _context.SaveChanges();
        }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            var client = StargateFactory.GetClient();

            client.BootstrapSchema();
            _MailTable = new MailTable(client);

            _Queue.Listen <SendMailRequest>("noticeboard-persist", x => SaveMail(x));

            Console.WriteLine("Listening for messages on: {0}, using Stargate at: {1}", ConfigurationManager.AppSettings["rabbitmq.host"], ConfigurationManager.AppSettings["hbase.cluster.url"]);
            Console.ReadLine();
        }
Exemplo n.º 8
0
        public static void InsertOnMailTable(ToLet.Classes.Mail mail)
        {
            DataClasses1DataContext cntx = ToLet.Database.DBConnectionProvider.getDBConnection();
            MailTable mailtable          = new MailTable();

            mailtable.to       = mail.To;
            mailtable.fromu    = mail.From;
            mailtable.message  = mail.Message;
            mailtable.delefrom = 0;
            mailtable.deletto  = 0;

            cntx.MailTables.InsertOnSubmit(mailtable);
            cntx.SubmitChanges();
        }
Exemplo n.º 9
0
 public void UpdateMailStatus(Guid mailID)
 {
     try
     {
         MailTable mailTable = mailTableRepository.GetEntityById(mailID);
         mailTable.IsRead = true;
         mailTableRepository.Update(mailTable);
     }
     catch (Exception ex)
     {
         LogServerManager.AddErrLog(ErrLogType.InnerErr, ex);
         throw;
     }
 }
Exemplo n.º 10
0
        private void buttonX_Send_Click(object sender, EventArgs e)
        {
            MailTable mailTable = new MailTable();

            if (ReceiverList.Count <= 0)
            {
                MessageBox.Show("请选择接收人");
                return;
            }
            if (string.IsNullOrWhiteSpace(textBoxX_Title.Text))
            {
                MessageBox.Show("请添加主题");
                return;
            }
            buttonX_Send.Enabled   = false;
            buttonX_Cancel.Enabled = false;
            if (ReceiverList.Count == 1)
            {
                mailTable.ReceiverIP = ReceiverList[0].UserIP;
                mailTable.Receiver   = ReceiverList[0].UserName;
            }
            foreach (var item in ReceiverList)
            {
                mailTable.ReceiverDic = new Dictionary <string, string>();
                mailTable.ReceiverDic.Add(item.UserIP, item.UserName);
            }
            mailTable.Sender       = userName;
            mailTable.SenderIP     = localIP;
            mailTable.SendTime     = DateTime.Now;
            mailTable.MailTitle    = textBoxX_Title.Text;
            mailTable.MailFileName = Path.GetFileName(textBoxX_FileName.Text);
            mailTable.MailContent  = textBoxX_MailContent.Text;

            if (mailServerCommunicate.SendMail(mailTable, textBoxX_FileName.Text))
            {
                MessageBox.Show("已发送");
            }
            else
            {
                MessageBox.Show("发送失败");
            }

            buttonX_Send.Enabled   = true;
            buttonX_Cancel.Enabled = true;
            ClearMailSendControl();
        }
Exemplo n.º 11
0
        private void SaveMailFile(MailTable mailTable)
        {
            IPAddress  ip       = IPAddress.Parse(mailTable.SenderIP);
            IPEndPoint endPoint = new IPEndPoint(ip, mailTable.MailFileListenPort);
            TcpClient  localClient;

            try
            {
                localClient = new TcpClient();
                localClient.Connect(endPoint);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            NetworkStream streamToClient    = localClient.GetStream();
            string        ReceiverDirectory = Path.Combine(mailDirectory, mailTable.SenderIP);
            string        filePath          = Path.Combine(ReceiverDirectory, mailTable.MailFileStorageName);
            DirectoryInfo di = Directory.CreateDirectory(ReceiverDirectory);

            byte[]     fileBuffer = new byte[1024];
            FileStream fs         = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);
            int        bytesRead;

            byte[] streamBuffer = new byte[1024 * 1024];
            try
            {
                do
                {
                    bytesRead = streamToClient.Read(streamBuffer, 0, streamBuffer.Length);
                    fs.Write(streamBuffer, 0, bytesRead);
                } while (bytesRead > 0);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                streamToClient.Dispose();
                fs.Dispose();
                localClient.Close();
            }
        }
Exemplo n.º 12
0
        public static void DeletMail(int id, string si)
        {
            DataClasses1DataContext cntx = ToLet.Database.DBConnectionProvider.getDBConnection();


            if (si == "SentItem")
            {
                MailTable mailtable = cntx.MailTables.SingleOrDefault(x => x.Id == id);
                mailtable.deletto = 1;
                cntx.SubmitChanges();
            }
            else if (si == "Inbox")
            {
                MailTable mailtable = cntx.MailTables.SingleOrDefault(x => x.Id == id);
                mailtable.delefrom = 1;
                cntx.SubmitChanges();
            }
        }
Exemplo n.º 13
0
        private void dataGridView_Received_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }
            string mailID = dataGridView_Received.Rows[e.RowIndex].Cells[1].Value.ToString();

            MailTable seletedMail = mailRecordsReceived.Find(_ => _.MailID.ToString().Equals(mailID));

            if (seletedMail == null)
            {
                return;
            }
            //请求服务器更新邮件状态
            if (!seletedMail.IsRead)
            {
                Task.Factory.StartNew(() =>
                {
                    string sendMsg = CommonUtils.GetCommand(MailServerCommunicate.MailServerCommand.UpdateMailStatusRequest.ToString(), localIP, mailID);
                    mailServerCommunicate.SendMsgToServer(sendMsg);
                });
            }
            seletedMail.IsRead = true;

            MailInfoForm MailInfoForm = new MailInfoForm(seletedMail, mailServerCommunicate);

            MailInfoForm.StartPosition = FormStartPosition.CenterParent;
            MailInfoForm.ShowDialog();

            DataTable dt = (DataTable)dataGridView_Received.DataSource;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];
                if (dr[1].Equals(mailID))
                {
                    dr[2] = "已读";
                    //dataGridView_Received.DataSource = dtReceived;
                    break;
                }
            }
            dataGridView_Received.DataSource = dt;
        }
Exemplo n.º 14
0
        public override void ExecuteCommand(MailSession session, StringRequestInfo requestInfo)
        {
            MailTable         mailTable         = JsonConvert.DeserializeObject <MailTable>(requestInfo.Body);
            MailServerManager mailServerManager = new MailServerManager();

            mailTable.MailFileName = mailServerManager.GetNewFileName(mailTable.MailFileName);

            if (!MailServerManager.OnlineUserDic.ContainsKey(mailTable.ReceiverIP))//不包含,返回错误
            {
                session.TrySend(MailServerCommand.SendMailResult.ToString() + " " + JsonConvert.SerializeObject(new { Result = false, Message = string.Format("找不到收件人{0}", mailTable.Receiver) }) + "\r\n");
                return;
            }

            //将邮件信息存储到服务器上
            string        basePath          = AppDomain.CurrentDomain.BaseDirectory;
            string        mailDirectory     = Path.Combine(basePath, "MailCache");
            string        ReceiverDirectory = Path.Combine(mailDirectory, mailTable.ReceiverIP);
            string        filePath          = Path.Combine(ReceiverDirectory, mailTable.MailFileName);
            DirectoryInfo di = Directory.CreateDirectory(ReceiverDirectory);

            using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                fs.Write(mailTable.MailFile, 0, mailTable.MailFile.Length);
            }
            try
            {
                MailTableRepository mailTableRepository = new MailTableRepository();
                mailTableRepository.Insert(mailTable);
            }
            catch (Exception ex)
            {
                LogServerManager.AddErrLog(LogServerManager.ErrLogType.DBErr, ex);
            }
            //清空发送的附件缓存
            Array.Clear(mailTable.MailFile, 0, mailTable.MailFile.Length);
            //转发邮件给目标用户
            foreach (var item in session.AppServer.GetSessions(_ => _.RemoteEndPoint.Address.ToString() == mailTable.ReceiverIP))
            {
                string msg = MailServerCommand.ReceiveMail + " " + JsonConvert.SerializeObject(mailTable) + "\r\n";
                item.TrySend(msg);
            }
        }
Exemplo n.º 15
0
        /// <summary>
        /// 将邮件信息存储到服务器上
        /// </summary>
        /// <param name="mailTable"></param>
        public void SaveMail(MailTable mailTable)
        {
            try
            {
                if (!string.IsNullOrEmpty(mailTable.MailFileName))
                {
                    SaveMailFile(mailTable);
                }

                if (mailTable.ReceiverDic.Count == 1)
                {
                    MailTableRepository mailTableRepository = new MailTableRepository();
                    mailTableRepository.Insert(mailTable);
                }
                else if (mailTable.ReceiverDic.Count > 1)//群发,拆分成多条保存
                {
                    foreach (var item in mailTable.ReceiverDic)
                    {
                        MailTable newMailTable = new MailTable();
                        newMailTable.ReceiverIP          = item.Key;
                        newMailTable.Receiver            = item.Value;
                        newMailTable.SenderIP            = mailTable.SenderIP;
                        newMailTable.Sender              = mailTable.Sender;
                        newMailTable.SendTime            = mailTable.SendTime;
                        newMailTable.MailTitle           = mailTable.MailTitle;
                        newMailTable.MailContent         = mailTable.MailContent;
                        newMailTable.MailFileName        = mailTable.MailFileName;
                        newMailTable.MailFileStorageName = mailTable.MailFileStorageName;
                        MailTableRepository mailTableRepository = new MailTableRepository();
                        mailTableRepository.Insert(newMailTable);
                    }
                }
            }
            catch (Exception ex)
            {
                LogServerManager.AddErrLog(ErrLogType.InnerErr, ex);
                throw ex;
            }
        }
Exemplo n.º 16
0
 public string Post([FromBody] MailTable mailTable)
 {
     _context.createmail(mailTable);
     return("entered");
 }
Exemplo n.º 17
0
 public void createmail(MailTable mailTable)
 {
     _context.mail_table.Add(mailTable);
     _context.SaveChanges();
 }
Exemplo n.º 18
0
 public MailInfoForm(MailTable mailTable, MailServerCommunicate mailServerCommunicate)
 {
     InitializeComponent();
     this.mailTable             = mailTable;
     this.mailServerCommunicate = mailServerCommunicate;
 }
Exemplo n.º 19
0
        /// <summary>
        /// 下载文电附件
        /// </summary>
        /// <param name="mailTable"></param>
        /// <param name="fileFullName"></param>
        public void DownloadMailFile(MailTable mailTable, string fileFullName, bool isOpen, Action <int> initDownloadProgress, Action <int> displayDownloadProgress, Action downloadEnd)
        {
            listener = new TcpListener(IPAddress.Parse(base.localIP), 0);//建立用于文件传输的临时通道
            listener.Start();
            IPEndPoint endPoint = listener.LocalEndpoint as IPEndPoint;

            string sendMsg = CommonUtils.GetCommand(MailServerCommunicate.MailServerCommand.DownloadMailFileRequest.ToString(), mailTable.SenderIP, mailTable.MailFileStorageName, base.localIP, endPoint.Port.ToString());

            SendMsgToServer(sendMsg);

            Task.Run(() =>
            {
                FileStream fs;
                TcpClient localClient;
                try
                {
                    localClient = listener.AcceptTcpClient();
                }
                catch
                {
                    return;
                }
                NetworkStream stream = localClient.GetStream();
                //获取文件长度,前4字节
                byte[] byte_fileLen = new byte[4];
                int count           = stream.Read(byte_fileLen, 0, byte_fileLen.Length);
                int fileLen         = BitConverter.ToInt32(byte_fileLen, 0);
                initDownloadProgress(fileLen);

                fs = new FileStream(fileFullName, FileMode.OpenOrCreate, FileAccess.Write);
                byte[] streamBuffer = new byte[1024 * 1024];
                int bytesRead;
                int totalBytes = 0;
                try
                {
                    do
                    {
                        //Thread.Sleep(100);
                        bytesRead = stream.Read(streamBuffer, 0, streamBuffer.Length);
                        fs.Write(streamBuffer, 0, bytesRead);
                        totalBytes += bytesRead;
                        displayDownloadProgress(totalBytes);
                    } while (bytesRead > 0);
                    //Console.WriteLine("Total {0} bytes Sent,Done!", totalBytes);
                }
                catch (Exception ex)
                {
                    if (MsgHint != null)
                    {
                        DownloadHint(ex.Message);
                    }
                    //Console.WriteLine(ex.Message);
                }
                finally
                {
                    fs.Dispose();
                    stream.Dispose();
                    localClient.Close();
                    listener.Stop();
                    if (isOpen)
                    {
                        Process p   = new Process();
                        p.StartInfo = new ProcessStartInfo(fileFullName);
                        p.Start();
                        //File.Open(fileFullName, FileMode.Open);
                    }
                    DownloadHint("下载完成");
                }
            }).ContinueWith(task =>
            {
                Thread.Sleep(500);//界面进度条有延迟,推迟显示提示
                downloadEnd();
            }
                            );
        }
Exemplo n.º 20
0
        /// <summary>
        /// 发送文电
        /// </summary>
        /// <param name="mailTable"></param>
        /// <param name="filePath"></param>
        public bool SendMail(MailTable mailTable, string filePath)
        {
            string sendMsg = string.Empty;

            if (base.streamToServer == null)
            {
                return(false);
            }
            if (string.IsNullOrEmpty(mailTable.MailFileName) || string.IsNullOrEmpty(filePath))
            {
                sendMsg = CommonUtils.GetCommand(MailServerCommunicate.MailServerCommand.MailSendResquest.ToString(), JsonConvert.SerializeObject(mailTable));
                SendMsgToServer(sendMsg);
            }
            else
            {
                TcpListener listener = new TcpListener(IPAddress.Parse(base.localIP), 0);
                listener.Start();
                IPEndPoint endPoint = listener.LocalEndpoint as IPEndPoint;
                mailTable.MailFileListenPort = endPoint.Port;

                sendMsg = CommonUtils.GetCommand(MailServerCommunicate.MailServerCommand.MailSendResquest.ToString(), JsonConvert.SerializeObject(mailTable));
                SendMsgToServer(sendMsg);

                TcpClient     localClient    = listener.AcceptTcpClient();
                NetworkStream streamToServer = localClient.GetStream();
                FileStream    fs             = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                InitSendProgress((int)fs.Length);

                byte[] fileBuffer = new byte[1024 * 1024];
                int    bytesRead;
                int    totalBytes = 0;
                try
                {
                    do
                    {
                        //Thread.Sleep(100);
                        bytesRead = fs.Read(fileBuffer, 0, fileBuffer.Length);
                        streamToServer.Write(fileBuffer, 0, bytesRead);
                        totalBytes += bytesRead;

                        DisplayProgress(totalBytes);
                    } while (bytesRead > 0);
                    //Console.WriteLine("Total {0} bytes Sent,Done!", totalBytes);
                    return(true);
                }
                catch (Exception ex)
                {
                    if (MsgHint != null)
                    {
                        MsgHint(ex.Message);
                    }
                    //Console.WriteLine(ex.Message);
                    return(false);
                }
                finally
                {
                    fs.Dispose();
                    streamToServer.Dispose();
                    localClient.Close();
                    listener.Stop();
                }
            }

            Thread.Sleep(1000);
            //获取发送文电记录
            sendMsg = CommonUtils.GetCommand(MailServerCommunicate.MailServerCommand.MailRecordsRequest.ToString(), localIP, "send", "1", "10");
            SendMsgToServer(sendMsg);
            return(true);
        }