コード例 #1
0
        /// <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);
        }