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; } }