Exemplo n.º 1
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.º 2
0
        public override void ExecuteCommand(MailSession session, StringRequestInfo requestInfo)
        {
            string            alias             = requestInfo.Body;
            string            ip                = session.RemoteEndPoint.Address.ToString();
            MailServerManager mailServerManager = new MailServerManager();

            mailServerManager.AddOnlineUser(ip, alias);
            session.TrySend(MailServerCommand.OnlineUsers.ToString() + " " + JsonConvert.SerializeObject(MailServerManager.OnlineUserDic) + "\r\n");
        }
Exemplo n.º 3
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);
            }
        }