public bool Save(string user, Mail mail, MailInfo mailInfo) { //Ver_Ml if (!IsUser(user)) { _log.Set(LogKind.Error, null, 9000047, string.Format("[{0}] {1}", user, mailInfo)); return(false); } //�t�H���_�쐬 var folder = string.Format("{0}\\{1}", Dir, user); if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } //�t�@�C�������� var name = CreateFileName(); var mfName = string.Format("{0}\\MF_{1}", folder, name); var dfName = string.Format("{0}\\DF_{1}", folder, name); //�t�@�C���ۑ� var success = false; try{ if (mail.Save(mfName)) { if (mailInfo.Save(dfName)) { success = true; } } else { _log.Set(LogKind.Error, null, 9000059, mail.GetLastError()); } }catch (Exception) { ; } //���s�����ꍇ�́A�쐬�r���̃t�@�C����S���폜 if (!success) { if (File.Exists(mfName)) { File.Delete(mfName); } if (File.Exists(dfName)) { File.Delete(dfName); } return(false); } //_logger.Set(LogKind.Normal, null, 8, mailInfo.ToString()); return(true); }
public bool Save(MailAddress to,Mail mail,MailInfo mailInfo) { if (mail.Append(to.ToString())) { if (_logger != null){ _logger.Set(LogKind.Normal, null, 21, string.Format("[{0}] {1}", to.User, mailInfo)); } } else { _logger.Set(LogKind.Error, null, 9000059, mail.GetLastError()); _logger.Set(LogKind.Error, null, 22, string.Format("[{0}] {1}", to.User, mailInfo)); } return true; }
public bool Save(string user, Mail mail, MailInfo mailInfo) { //Ver_Ml if (!IsUser(user)){ _log.Set(LogKind.Error, null, 9000047, string.Format("[{0}] {1}", user, mailInfo)); return false; } //�t�H���_�쐬 var folder = string.Format("{0}\\{1}", Dir, user); if (!Directory.Exists(folder)){ Directory.CreateDirectory(folder); } //�t�@�C�������� var name = CreateFileName(); var mfName = string.Format("{0}\\MF_{1}", folder, name); var dfName = string.Format("{0}\\DF_{1}", folder, name); //�t�@�C���ۑ� var success = false; try{ if (mail.Save(mfName)){ if (mailInfo.Save(dfName)){ success = true; } } else{ _log.Set(LogKind.Error, null, 9000059, mail.GetLastError()); } }catch (Exception){ ; } //���s�����ꍇ�́A�쐬�r���̃t�@�C����S���폜 if (!success){ if (File.Exists(mfName)) { File.Delete(mfName); } if (File.Exists(dfName)) { File.Delete(dfName); } return false; } //_logger.Set(LogKind.Normal, null, 8, mailInfo.ToString()); return true; }
public bool Save(Mail mail) { //ディレクトリが存在しない場合は作成する if (!Directory.Exists(_dir)) { Directory.CreateDirectory(_dir); } var fileName = MailFile(Count(true));//インクリメントした連番を取得する if (!mail.Save(fileName)) { _logger.Set(LogKind.Error, null, 9000059, mail.GetLastError()); _logger.Set(LogKind.Error, null, 33, fileName); return false; } return true; }
//Server及びMlから使用される //メールの保存(宛先はML以外であることが確定してから使用する) //テスト用のモックオブジェクト(TsMailSaveでSave()をオーバーライドできるようにvirtualにする public virtual bool Save(MailAddress from, MailAddress to, Mail orgMail, string host, Ip addr) { //Mailのヘッダ内容等を変更するので、この関数内だけの変更にとどめるため、テンポラリを作成する var mail = new Mail(); //orgMail.CreateClone(); mail.Init2(orgMail.GetBytes()); //ユニークなID文字列の生成 var uidStr = string.Format("bjd.{0:D20}.{1:D3}", DateTime.Now.Ticks, _idCounter++); //日付文字列の生成 //var date = Util.LocalTime2Str(DateTime.Now); //Receivedヘッダの追加 mail.AddHeader("Received", _receivedHeader.Get(to, host, addr)); // //Message-Idの追加 // if (null == mail.GetHeader("Message-ID")) // mail.AddHeader("Message-ID", string.Format("<{0}@{1}>", uidStr, _domainList[0])); // //Fromの追加 // if (null == mail.GetHeader("From")) // mail.AddHeader("From", string.Format("<{0}>", @from)); // //Dateの追加 // if (null == mail.GetHeader("Date")) // mail.AddHeader("Date", string.Format("{0}", date)); //ローカル宛(若しくはローカルファイル) if (to.IsLocal(_domainList)) { //ローカル保存の場合は、X-UIDLを追加する mail.AddHeader("X-UIDL", uidStr); //ヘッダを追加してサイズが変わるので、ここで初期化する var mailInfo = new MailInfo(uidStr, mail.Length, host, addr, from, to); if (to.IsFile()) { //ローカルファイルの場合(直接ファイルにAppendする) if (!_localBox.Save(to,mail,mailInfo)){ return false; } } else { //ローカルユーザの場合(メールボックスへSaveする) if (!_mailBox.Save(to.User, mail, mailInfo)){ return false; } } _logger.Set(LogKind.Normal, null, 8, mailInfo.ToString()); } else { //Toの追加 // if (null == mail.GetHeader("To")) { // mail.AddHeader("To", string.Format("<{0}>", to)); // } //ヘッダを追加してサイズが変わるので、ここで初期化する var mailInfo = new MailInfo(uidStr, mail.Length, host, addr, from, to); if (!_mailQueue.Save(mail, mailInfo)) { _logger.Set(LogKind.Error, null, 9000059, mail.GetLastError()); return false; } _logger.Set(LogKind.Normal, null, 9, mailInfo.ToString()); } return true; }