public Mail Summary(MlMailDb mlDb, MlSubject mlSubject, int start, int end) { //ライブラリからの取得 Encoding encoding = null; StringBuilder sb = new StringBuilder(); for (int i = start; i <= end; i++) { var mail = mlDb.Read(i); if (mail == null) { sb.Append(mlSubject.Get(i) + " library no't found.\r\n"); } else { string str = mail.GetHeader("subject"); if (str != null) { str = Subject.Decode(ref encoding, str); sb.Append(string.Format("{0}\r\n", str)); } else { sb.Append(mlSubject.Get(i) + " subject no't found.\r\n"); } } } string subject = string.Format("result for summary [{0}-{1}] ({2} ML)", start, end, mlAddr.Name); return(Create(ContentTyep.Sjis, subject, sb.ToString())); }
public void GetTest(int no) { const string mlName = "1ban"; for(var kind =0 ; kind<7 ; kind++){ var mlSubject = new MlSubject(kind,mlName); var s = mlSubject.Get(no); switch(kind){ case 0: Assert.AreEqual(s,string.Format("({0})",mlName)); break; case 1: Assert.AreEqual(s,string.Format("[{0}]",mlName)); break; case 2: Assert.AreEqual(s,string.Format("({0:D5})",no)); break; case 3: Assert.AreEqual(s,string.Format("[{0:D5}]",no)); break; case 4: Assert.AreEqual(s,string.Format("({0}:{1:D5})",mlName,no)); break; case 5: Assert.AreEqual(s,string.Format("[{0}:{1:D5}]",mlName,no)); break; case 6: Assert.AreEqual(s,string.Format("")); break; } } }
//投稿 public bool Post(Mail mail, MlEnvelope mlEnvelope) { //var no = mlDb.IncNo(mlAddr.Name);//インクリメントした記事番号の取得 var incNo = _mlDb.Count() + 1;//インクリメントした記事番号の取得 //記事メールの編集 //Subject:の変更 mail.ConvertHeader("subject", _mlSubject.Get(mail.GetHeader("subject"), incNo)); //Reply-To:の追加 mail.ConvertHeader("Reply-To", string.Format("\"{0}\"<{1}>", _mlAddr.Name, _mlAddr.Post)); //List-Id:の追加 mail.ConvertHeader("List-Id", string.Format("{0}.{1}", _mlAddr.Name, _mlAddr.DomainList[0])); //List-Software:の追加 mail.ConvertHeader("List-Software", string.Format("{0}", Define.ApplicationName())); //List-Post:の追加 mail.ConvertHeader("List-Post", string.Format("<mailto:{0}>", _mlAddr.Post)); //List-Owner:の追加 mail.ConvertHeader("List-Owner", string.Format("<mailto:{0}>", _mlAddr.Admin)); //List-Help:の追加 mail.ConvertHeader("List-Help", string.Format("<mailto:{0}?body=help>", _mlAddr.Ctrl)); //List-Unsubscribe:の追加 mail.ConvertHeader("List-Unsubscribe", string.Format("<mailto:{0}?body=unsubscribe>", _mlAddr.Ctrl)); //ライブラリへの保存 _mlDb.Save(mail); //各メンバーへの配信 foreach (MlOneUser to in _mlUserList) { if (to.Enable && to.IsReader) //「配信する」のみが対象となる { if (!_mlSender.Send(mlEnvelope.ChangeTo(to.MailAddress), mail)) { //配信に失敗したメールを管理者に転送する var subject = string.Format("DELIVERY ERROR article to {0} ({1} ML)", to, _mlAddr.Name); return(AttachToAmdin(mail, subject, mlEnvelope)); } } } return(true); }
public void Get2Test(int no, string subject, string mlName, int kind, string ansStr) { var mlSubject = new MlSubject(kind,mlName); //連番を付加したSubjectの生成 Assert.AreEqual(ansStr, mlSubject.Get(subject, no)); }
public Mail Summary(MlMailDb mlDb, MlSubject mlSubject, int start, int end) { //ライブラリからの取得 Encoding encoding = null; StringBuilder sb = new StringBuilder(); for (int i = start; i <= end; i++) { var mail = mlDb.Read(i); if (mail == null) { sb.Append(mlSubject.Get(i) + " library no't found.\r\n"); } else { string str = mail.GetHeader("subject"); if (str != null) { str = Subject.Decode(ref encoding, str); sb.Append(string.Format("{0}\r\n", str)); } else { sb.Append(mlSubject.Get(i) + " subject no't found.\r\n"); } } } string subject = string.Format("result for summary [{0}-{1}] ({2} ML)", start, end, mlAddr.Name); return Create(ContentTyep.Sjis, subject, sb.ToString()); }