Exemplo n.º 1
0
        //投稿
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
Arquivo: Ml.cs Projeto: schifflee/bjd5
 //メール保存
 public bool Save(Mail mail)
 {
     return(_mlMailDb.Save(mail));
 }