Ejemplo n.º 1
0
 //管理者すべてに送信する
 public bool SendAllAdmin(MlEnvelope mlEnvelope, Mail mail)
 {
     foreach (MlOneUser to in _mlUserList)
     {
         if (!to.Enable || !to.IsManager)
         {
             continue;                                      //管理者アドレス
         }
         var mlenv   = mlEnvelope.ChangeTo(to.MailAddress); //受信者を管理者に変更する
         var tmpMail = mail.CreateClone();
         tmpMail.ConvertHeader("to", to.MailAddress.ToString());
         if (!_mlSender.Send(mlenv, tmpMail))
         {
             return(false);//失敗した場合は、全宛先に送信されない
         }
     }
     return(true);
 }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
 //管理者すべてに送信する
 public bool SendAllAdmin(MlEnvelope mlEnvelope, Mail mail)
 {
     foreach (MlOneUser to in _mlUserList) {
         if (!to.Enable || !to.IsManager)
             continue; //管理者アドレス
         var mlenv = mlEnvelope.ChangeTo(to.MailAddress);//受信者を管理者に変更する
         var tmpMail = mail.CreateClone();
         tmpMail.ConvertHeader("to", to.MailAddress.ToString());
         if (!_mlSender.Send(mlenv, tmpMail)) {
             return false;//失敗した場合は、全宛先に送信されない
         }
     }
     return true;
 }
Ejemplo n.º 4
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;
        }