If you have a dead line to check then it's simple:
DateTime deadLine = new DateTime(2016, 6, 2);
...
if (DateTime.Now >= deadLine && emailNotSentYet)
{
emailNotYetSent = false;
...
}
But just writing that code won't automatically send the email. First, your app has to be running at the time, and you would need to check repeatedly in order to catch the time, possibly with a Timer control.
What I would do is to create a small app that had no UI, but that just read the deadline from a file or a database, and checked it against the current date. If it should, it sends the email and kills the deadline in the file. Either way it then exits.
I'd then arrange for the Windows Scheduler to run that every half hour or so.
Make sense?