public void Send(IList <string> tos, string subject, string body, Encoding subjectEncoding, Encoding bodyEncoding, bool isHtmlBody, string attachmentPath)
        {
            if (InterceptorEmitter != null)
            {
                var record = new CommInterceptorRecord(this.TagName);

                record.Count = tos.Count;

                var isSuccess = InterceptorEmitter.IsInterceptor(record);

                if (!isSuccess)
                {
                    //将当前服务停止
                    //再次触发重发事件
                    this.Stop();
                    if (OnSendComplete != null)
                    {
                        OnSendComplete.Invoke(this, new SendResultEventArgs(this.TagName, tos, subject, GeneratorPackgeId.GetPakcageId(), body, bodyEncoding, subjectEncoding, isHtmlBody, "", SendResult.Ohter, ""));
                    }
                    return;
                }
            }

            _emailEmitter.Send(tos, subject, body, subjectEncoding, bodyEncoding, isHtmlBody, attachmentPath);
        }
        protected override void LoadData()
        {
            IList <SmtpHostConfig> newList = base.LoadConfig();

            if (newList == null || newList.Count == 0)
            {
                //未加载配置信息
                throw new ArgumentException("config not found");
            }

            lock (_synch)
            {
                foreach (var item in newList)
                {
                    EmailEmitterService emitterService = null;

                    if (_dicEmitter.TryGetValue(item.TagName, out emitterService))
                    {
                        IEmailConfig emitterConfig = emitterService.EmailConfig;

                        if (emitterConfig.Host != item.Host ||
                            emitterConfig.Account != item.Account ||
                            emitterConfig.Credentials != item.Credentials ||
                            emitterConfig.Port != item.Port ||
                            emitterConfig.DeliveryMethod != item.DeliveryMethod
                            )
                        {
                            _dicEmitter.TryRemove(item.TagName, out emitterService);
                        }
                        else
                        {
                            continue;
                        }
                    }


                    EmailEmitterService newEmitterService = new EmailEmitterService(item);
                    if (item.InterceptorConfig != null && item.InterceptorConfig.Count > 0)
                    {
                        var filters = new List <IFilter>();

                        filters.Add(new DayFilter());

                        filters.Add(new HourFilter());

                        var interceptorEmitter = new InterceptorEmitter(item.InterceptorConfig, filters, item.TagName);

                        newEmitterService.InterceptorEmitter = interceptorEmitter;
                    }
                    newEmitterService.OnSendComplete += NewEmitterService_OnSendComplete;

                    newEmitterService.Start();

                    _dicEmitter.TryAdd(item.TagName, newEmitterService);

                    _emmitterQueue.Enqueue(item.TagName);
                }
                CurrentCount = _dicEmitter.Count;
            }
        }