Пример #1
0
        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()));
        }
Пример #2
0
        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;
                }
            }
        }
Пример #3
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);
        }
Пример #4
0
 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));
 }
Пример #5
0
 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());
 }