public int Update(MailTable entityToInsert) { using (Conn) { return(Conn.Update(entityToInsert)); } }
public int Delete(MailTable entityToInsert) { using (Conn) { return(Conn.Delete(entityToInsert)); } }
public Guid Insert(MailTable entityToInsert) { using (Conn) { return(Conn.Insert <Guid>(entityToInsert)); } }
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); } }
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(); }
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(); }
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(); }
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(); }
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; } }
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(); }
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(); } }
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(); } }
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; }
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); } }
/// <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; } }
public string Post([FromBody] MailTable mailTable) { _context.createmail(mailTable); return("entered"); }
public void createmail(MailTable mailTable) { _context.mail_table.Add(mailTable); _context.SaveChanges(); }
public MailInfoForm(MailTable mailTable, MailServerCommunicate mailServerCommunicate) { InitializeComponent(); this.mailTable = mailTable; this.mailServerCommunicate = mailServerCommunicate; }
/// <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(); } ); }
/// <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); }