//投稿 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 SaveReadTest() { var tmpDir = TestUtil.GetTmpDir("$tmp"); var logger = new Logger(); var mail = new Mail(); const string mlName = "1ban"; var mlMailDb = new MlMailDb(logger, tmpDir, mlName); mlMailDb.Remove();//もし、以前のメールが残っていたらTESTが誤動作するので、ここで消しておく Assert.AreEqual(mlMailDb.Count(), 0); const int max = 10; //試験件数10件 //保存と、 for (int i = 0; i < max; i++) { var b = mlMailDb.Save( mail); Assert.AreEqual(b,true);//保存が成功しているか Assert.AreEqual(mlMailDb.Count(), i+1);//連番がインクリメントしているか } //範囲外のメール取得でnullが返るか //no==1..10が取得可能 var m = mlMailDb.Read(0);//範囲外 Assert.IsNull(m); //範囲内 for (int no = 1; no <= max; no++) { //m = mlMailDb.Read(no); mlMailDb.Read(no); Assert.NotNull(mlMailDb.Read(no)); } //範囲外 m = mlMailDb.Read(11); Assert.IsNull(m); //TearDown mlMailDb.Remove(); mlMailDb.Dispose(); Directory.Delete(tmpDir,true); }
//メール保存 public bool Save(Mail mail) { return(_mlMailDb.Save(mail)); }