Example #1
0
 //メールの送信 count=本文の行数(-1の場合は全部)
 public bool Send(SockTcp sockTcp, int count)
 {
     string fileName = string.Format("{0}\\MF_{1}", _dir, _fname);
     var mail = new Mail();
     mail.Read(fileName);
     if (!mail.Send(sockTcp, count)){
         // Logger.Set(LogKind.Error, null, 9000058, ex.Message);
         //mail.GetLastEror()を未処理
         return false;
     }
     return true;
 }
Example #2
0
        public Mail Read(int no)
        {
            //ディレクトリが存在しない場合は失敗となる
            if (!Directory.Exists(_dir)) {
                return null;
            }

            var fileName = MailFile(no);
            if (File.Exists(fileName)) {
                var mail = new Mail();
                if (mail.Read(fileName)) {
                    return mail;
                }
            }
            _logger.Set(LogKind.Error, null, 44, fileName);
            return null;
        }
Example #3
0
 public bool Read(string fname, ref Mail mail)
 {
     lock (_lockObj) {//�r������
         var fileName = string.Format("{0}\\MF_{1}", Dir, fname);
         return mail.Read(fileName);
     }
 }
Example #4
0
        //リモート操作(データの取得)
        public override string Cmd(string cmdStr)
        {
            if (!Kernel.MailBox.Status)
                return "";

            if (cmdStr == "Refresh-MailBox") {
                //キュー一覧
                var sb = new StringBuilder();
                var files = Directory.GetFiles(_mailQueue.Dir, "DF_*");
                Array.Sort(files);
                foreach (string fileName in files) {
                    var mailInfo = new MailInfo(fileName);
                    sb.Append(string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", "$queue", mailInfo.Uid, mailInfo.From, mailInfo.To, mailInfo.Size.ToString(), mailInfo.Date));
                    sb.Append('\b');
                }
                //ユーザメール一覧
                foreach (var user in Kernel.MailBox.UserList) {
                    var folder = string.Format("{0}\\{1}", Kernel.MailBox.Dir, user);
                    files = Directory.GetFiles(folder, "DF_*");
                    Array.Sort(files);
                    foreach (string fileName in files) {
                        var mailInfo = new MailInfo(fileName);
                        sb.Append(string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", user, mailInfo.Uid, mailInfo.From, mailInfo.To, mailInfo.Size.ToString(), mailInfo.Date));
                        sb.Append('\b');
                    }
                }
                return sb.ToString();
            } else if (cmdStr.IndexOf("Cmd-View") == 0) {
                var tmp = cmdStr.Split('-');
                if (tmp.Length == 4) {
                    var folder = "";
                    var mailInfo = Search(tmp[2], tmp[3], ref folder);
                    if (mailInfo != null) {
                        var emlFileName = string.Format("{0}\\MF_{1}", folder, mailInfo.FileName);
                        var mail = new Mail();
                        mail.Read(emlFileName);
                        return Inet.FromBytes(mail.GetBytes());
                    }
                    return "ERROR";
                }
            } else if (cmdStr.IndexOf("Cmd-Delete") == 0) {
                if (ThreadBaseKind == ThreadBaseKind.Running) {
                    return "running";
                }
                var tmp = cmdStr.Split('-');
                if (tmp.Length == 4) {
                    string folder = "";
                    var mailInfo = Search(tmp[2], tmp[3], ref folder);
                    if (mailInfo != null) {
                        string fileName = string.Format("{0}\\MF_{1}", folder, mailInfo.FileName);
                        File.Delete(fileName);
                        fileName = string.Format("{0}\\DF_{1}", folder, mailInfo.FileName);
                        File.Delete(fileName);
                        return "success";
                    }
                }
            }
            return "";
        }
Example #5
0
 //メールの一覧を取得する
 public List<Mail> GetMf(string user)
 {
     var dir = String.Format("{0}\\SmtpServerTest\\mailbox\\{1}", TestUtil.ProjectDirectory(), user);
     var ar = new List<Mail>();
     foreach (var fileName in Directory.GetFiles(dir, "MF*")){
         var mail = new Mail();
         mail.Read(fileName);
         ar.Add(mail);
     }
     return ar;
 }