Как сделать так, чтобы оно отправляло письмо только один раз? [закрыто]

private void timer4_Tick(object sender, EventArgs e)
{
     se.SendPhotos(photofilesDir + "\\" + "photofiles.zip");

     if (se.photossendended == true)
     {
           se.photossendended = false;
           timer4.Enabled = false;
           timer5.Enabled = true;
     }
}

Доse.photossendended == true это будет продолжать делатьse.SendPhotos(photofilesDir + "\\" + "photofiles.zip");

Но я хочу сделать это только один раз и сохранить проверкуse.photossendended если это правда. Итак, я пытался сделатьwhile(true)

private void timer4_Tick(object sender, EventArgs e)
{
     se.SendPhotos(photofilesDir + "\\" + "photofiles.zip");

     while(true)
     {
          if (se.photossendended == true)
          {
               se.photossendended = false;
               timer4.Enabled = false;
               timer5.Enabled = true;
          }
     }
}

Но тогда он будет содержать всю программу и никогда не выполнит ее, так как программа не продолжается и все застряло в этом цикле. Так что это никогда не верно, и цикл будет продолжаться вечно.

РЕДАКТИРОВАТЬ**

Это класс se SendEmail

public void SendPhotos(string fileNameToSend) 
        {
            try
            {
                MailAddress from = new MailAddress("username", "User " + (char)0xD8 + " Name",
                System.Text.Encoding.UTF8);
                MailAddress to = new MailAddress("myrmail");
                photosmessage = new MailMessage(from, to);
                photosmessage.Body = "Please check the log file attachment i have some bugs.";
                string someArrows = new string(new char[] { '\u2190', '\u2191', '\u2192', '\u2193' });
                photosmessage.Body += Environment.NewLine + someArrows;
                photosmessage.BodyEncoding = System.Text.Encoding.UTF8;
                photosmessage.Subject = "Log File For Checking Bugs" + someArrows;
                photosmessage.SubjectEncoding = System.Text.Encoding.UTF8;
                Attachment myAttachment = new Attachment(fileNameToSend, MediaTypeNames.Application.Octet);
                photosmessage.Attachments.Add(myAttachment);
                SmtpClient photossend = new SmtpClient("smtp.gmail.com", 587);
                photossend.SendCompleted += new SendCompletedEventHandler(photossend_SendCompleted);
                photossend.EnableSsl = true;
                photossend.Timeout = 10000;
                photossend.DeliveryMethod = SmtpDeliveryMethod.Network;
                photossend.UseDefaultCredentials = false;
                photossend.Credentials = new NetworkCredential("user", "pass");
                string userState = "test message1";
                photossend.SendAsync(photosmessage, userState);
                SendLogFile.Enabled = false;
            }

            catch (Exception errors)
            {
                Logger.Write("Error sending message :" + errors);
            }
        }

        private void photossend_SendCompleted(object sender, AsyncCompletedEventArgs e)
        {
            photosmessage.Dispose();
            photossendended = true;
        }

Я хотел убедиться, что письмо отправлено, поэтому я сделал, чтобы это было правдой: photossendended = true; Затем в Form1 в событии отметки timer4 я хочу отправить электронное письмо один раз, если его правда остановите таймер 5 активации таймера, затем отправьте туда второе электронное письмо и снова и снова.

У меня есть 4 события таймера, которые я делаю, и включаю их один за другим. Причина в том, что я хотел отправлять каждое электронное письмо только тогда, когда оно было отправлено ранее.

Ответы на вопрос(3)

Ваш ответ на вопрос