private bool Send(BatchTemplateMessage email)
        {
            lock (this) {
                var result = 0;
                if (CurrentTemplateSendRequest == null) {
                    CurrentTemplateSendRequest = new BatchTemplateSendRequest();
                }

                CurrentTemplateSendRequest.messages.Add(email);

                if (CurrentTemplateSendRequest.messages.Count >= EmailBufferSize) {
                    var response = HttpClient.SendEmails(CurrentTemplateSendRequest);
                    OnTranmission(response);
                    result = CurrentTemplateSendRequest.messages.Count;
                    CurrentTemplateSendRequest = new BatchTemplateSendRequest();
                }
                Logger.info(String.Format("Send Complete: {0} messages buffered and {1} messages tranmitted.", 1, result));
                return result > 0;
            }
        }
 public bool Flush()
 {
     var result = 0;
     lock (this) {
         if (CurrentEmailSendRequest != null && CurrentEmailSendRequest.messages.Count > 0) {
             var response = HttpClient.SendEmails(CurrentEmailSendRequest);
             OnTranmission(response);
             result = CurrentEmailSendRequest.messages.Count;
             CurrentEmailSendRequest = new BatchEmailSendRequest();
         }
         if (CurrentTemplateSendRequest != null && CurrentTemplateSendRequest.messages.Count > 0) {
             var response = HttpClient.SendEmails(CurrentTemplateSendRequest);
             OnTranmission(response);
             result = CurrentTemplateSendRequest.messages.Count;
             CurrentTemplateSendRequest = new BatchTemplateSendRequest();
         }
     }
     Logger.info(String.Format("Flush Complete: {0} messages tranmitted.", result));
     return result > 0;
 }