//管理者すべてに送信する 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); }
//投稿 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 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; }
//投稿 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; }