bool CanMessageBeSent(out string error)
        {
            error = null;

            if (Mail.IsSending)
            {
                return(false);
            }

            if (MessageTextBox.TextLength < MinimalAmountOfCharacters)
            {
                error = TooLittleCharactersError;
                return(false);
            }

            bool lastMailInfoGotten = ProgramDataDir.TryGetInfo(ProgramDataDir.Line.LastMailTime, out string lastMailTime);

            if (lastMailInfoGotten)
            {
                long     currTime   = DateTimeOffset.Now.ToUnixTimeSeconds();
                long     mailTime   = long.Parse(lastMailTime);
                TimeSpan difference = TimeSpan.FromSeconds(currTime - mailTime);
                if (difference < DelayBetweenMails)
                {
                    error = NotEnoughTimePassedError;
                    return(false);
                }
            }

            return(true);
        }
        private async void SendButton_ClickAsync(object sender, EventArgs e)
        {
            if (!CanMessageBeSent(out string error))
            {
                if (error != null)
                {
                    InfoLabel.Text = error;
                }
                return;
            }

            InfoLabel.Text = SendingInProcessText;

            Mail.SubjectType subject = SubjectRadioButtons.Single(butt => butt.Checked).Text.ToEnum <Mail.SubjectType>();

            (bool success, Exception ex)result = await Task.Run(() => (Mail.TrySendMail(MessageTextBox.Text, subject, out Exception ex), ex));

            if (result.success)
            {
                InfoLabel.Text = SuccesfullySentText;
                ProgramDataDir.WriteInfo(ProgramDataDir.Line.LastMailTime, DateTimeOffset.Now.ToUnixTimeSeconds().ToString());
            }
            else
            {
                InfoLabel.Text = GeneralSendingError;
            }
        }