/// <summary>
        /// 递增发件量
        /// </summary>
        /// <returns>true:可以继续发件;false:发件已达到最大数量</returns>
        public bool IncreaseSentCount(LiteDBManager liteDb, Setting globalSetting)
        {
            // 判断日期是否是今天,如果不是,则将当天发件数置 0
            string date = DateTime.Now.ToString("yyyy-MM-dd");

            if (date != settings.recordDate)
            {
                settings.recordDate     = date;
                settings.sentCountToday = 0;
            }

            settings.sentCountToday++;
            settings.sendCountTotal++;

            // 保存到数据库
            liteDb.Update(this);

            int maxEmails = settings.maxEmailsPerDay > 0 ? settings.maxEmailsPerDay : globalSetting.maxEmailsPerDay;

            if (maxEmails < 1)
            {
                return(true);
            }

            return(settings.sendCountTotal <= maxEmails);
        }
        /// <summary>
        /// 将发送内容转成图片
        /// </summary>
        /// <param name="sendItem"></param>
        private async Task <bool> ConvertToImage(Setting setting, SendItem sendItem)
        {
            if (sendItem.sendItemType == SendItemType.dataUrl && setting.sendWithImageAndHtml && string.IsNullOrEmpty(sendItem.dataUrl))
            {
                // 从前端转存图片
                ReceivedMessage message = await SendCallback.Insance.SendAsync(_userId, new Protocol.Response()
                {
                    eventName = "sendingInfo",
                    command   = "html2image",
                    result    = sendItem,
                });

                if (message == null)
                {
                    return(false);
                }

                // 将结果添加到sendItem中
                var dataUrl = message.JObject.SelectToken("result");
                if (dataUrl == null)
                {
                    return(false);
                }

                dataUrl = dataUrl.Value <string>();

                sendItem.dataUrl = $"<img src=\"{dataUrl}\">";

                // 更新保存的数据
                _liteDb.Update(sendItem);
            }

            return(true);
        }
        /// <summary>
        /// 开始发送未发送成功的数据
        /// </summary>
        /// <param name="sendItemIds">传入需要重新发送的id</param>
        /// <returns></returns>
        public bool StartSending()
        {
            // 判断是否结束
            if (!SendStatus.HasFlag(SendStatus.SendFinish))
            {
                return(false);
            }

            var allSendItems = _liteDb.Fetch <SendItem>(item => item.historyId == _currentHistoryGroupId);
            var sendItems    = allSendItems.FindAll(item => !item.isSent);

            // 判断数量
            if (sendItems.Count < 1)
            {
                // 发送完成的进度条
                SendingProgressInfo = new SendingProgressInfo()
                {
                    total = 1,
                    index = 1,
                };
                return(true);
            }
            else
            {
                // 更改进度
                SendingProgressInfo = new SendingProgressInfo()
                {
                    total = sendItems.Count,
                    index = 0,
                };
            }

            // 判断是发送还是重发
            if (allSendItems.Count == sendItems.Count)
            {
                SendStatus = SendStatus.Sending;
            }
            else
            {
                SendStatus = SendStatus.Resending;
            }

            // 更改数据库中的状态
            var history = _liteDb.SingleById <HistoryGroup>(_currentHistoryGroupId);

            if (history == null)
            {
                return(false);
            }

            history.sendStatus = SendStatus;
            _liteDb.Update(history);


            // 判断需要发送的数量
            if (allSendItems.Count < 1)
            {
                history.sendStatus = SendStatus.SendFinish;
                _liteDb.Update(history);

                // 获取重发完成的信息
                var sendingInfo = new SendingProgressInfo()
                {
                    historyId = _currentHistoryGroupId,
                    index     = 1,
                    total     = 1,
                };
                SendingProgressInfo = sendingInfo;

                return(false);
            }

            // 处理每条邮件
            PreHandleSendItems(sendItems);

            // 开始发件
            SendItems(sendItems);

            return(true);
        }