//メールの送信 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; }
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; }
public bool Read(string fname, ref Mail mail) { lock (_lockObj) {//�r������ var fileName = string.Format("{0}\\MF_{1}", Dir, fname); return mail.Read(fileName); } }
//リモート操作(データの取得) 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 ""; }
//メールの一覧を取得する 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; }