/// <summary> /// 发送邮件请求到MQ /// </summary> /// <param name="eRequest"></param> /// <returns></returns> public EmailResponse SendEmail(EmailRequest eRequest) { if (!CheckParas(eRequest)) { return(_eResponse); } var emailId = Guid.NewGuid().ToString("N"); var emailFacade = new EmailFacade(); try { while (emailFacade.IsEmailIdExist(emailId)) { emailId = Guid.NewGuid().ToString("N"); } } catch (Exception ex) { loger.Error("数据库查询EmailId是否存在失败--EmailId:{0}--Exception:{1}".FormatWith(new object[] { emailId, ex })); } var emailDto = ConverToCommonDTO(emailId, eRequest); _eResponse.Success = true; _eResponse.EmailId = emailId; _eResponse.ErrMsg = ""; loger.Info("开始转发--EmailId:{0}".FormatWith(emailId)); var bus = MqBusMgr.GetInstance(); if (!bus.IsConnected || bus.IsNull()) { _eResponse.Success = false; _eResponse.ErrMsg = "无法连接RabbitMQ"; loger.Error("无法连接RabbitMQ--EmailId:{0}".FormatWith(emailId)); } else { try { bus.PublishAsync(emailDto).ContinueWith(task => { if (!(task.IsCompleted && !task.IsFaulted)) { _eResponse.Success = false; _eResponse.ErrMsg = string.Format("发送RabbitMQ失败"); loger.Error("发送RabbitMQ失败--EmailId:{0}--Exception:{1}".FormatWith(new object[] { emailId, task.Exception })); } }).Wait(); } catch (Exception ex) { _eResponse.Success = false; _eResponse.ErrMsg = string.Format("发送RabbitMQ失败"); loger.Error("发送RabbitMQ失败--EmailId:{0}--Exception:{1}".FormatWith(new object[] { emailId, ex })); } } //保存数据库 var email = new Email { EmailId = emailDto.Id, AppId = emailDto.AppId, EmailCC = emailDto.CC, EmailContent = emailDto.Content, EmailErrMsg = _eResponse.ErrMsg, EmailReceivedTime = DateTime.Now, EmailSentTime = DateTime.Now, EmailStatus = EmailStatus.Received.ToString(), EmailSubject = emailDto.Subject, EmailToAddr = emailDto.ToAddr }; try { emailFacade.AddEmail(email); } catch (Exception ex) { loger.Error("数据库增加Email记录失败--EmailId:{0}--Exception:{1}".FormatWith(new object[] { emailId, ex })); } loger.Info("结束转发--EmailId:{0}--结果:{1}".FormatWith(new object[] { emailId, _eResponse.Success })); return(_eResponse); }