using System; using System.Collections.Generic; using System.Text; using System.Net.Mail; namespace SendMail { class Program { static void Main() { const string appTitle = "SendMail v1.0"; const bool debug = false; const int maxMessages = 20; Queue messages = new Queue(maxMessages); bool isValidCount = false; int count = 1; if (debug) { Console.Title = appTitle + " [ DEBUG MODE ACTIVE ]"; Console.WriteLine( "*** NOTICE *** Debug mode is active," + " emails will not be sent *** NOTICE ***"); Console.WriteLine(); } else { Console.Title = appTitle; } do { Console.Write("How many emails do you wish to send?: "); string strCount = Console.ReadLine(); try { count = Int32.Parse(strCount); if (count <= maxMessages) { isValidCount = true; } else { Console.WriteLine("You've exceeded the maximum message limit of {0}", maxMessages); Console.WriteLine("Press [ ENTER ] to continue"); Console.ReadLine(); } } catch (FormatException) { Console.WriteLine("An invalid number was specified"); Console.WriteLine("Press [ ENTER ] to continue"); Console.ReadLine(); } Console.Clear(); } while (!isValidCount); for (int i = 1; i <= count; i++) { SpecificMailMessage msg = writeMail(); if (msg == null) { Console.WriteLine("Invalid email specified, message unsendable"); i--; } messages.Enqueue(msg); Console.WriteLine(); for (int k = 0; k != Console.WindowWidth; k++) { Console.Write('-'); } Console.WriteLine(); } Console.Write("Send {0} messages? [Y\\N]: ", count); string confirm = Console.ReadLine(); Console.WriteLine(); if (confirm.ToLower() == "y") { sendMail(messages, debug); } else { Console.Write("Are you sure you wish to exit? [Y\\N]: "); confirm = Console.ReadLine(); Console.WriteLine(); if (confirm.ToLower() == "y") { Environment.Exit(0); } else { sendMail(messages, debug); } } Console.WriteLine(); Console.WriteLine("SendMail v1.0 by Moose"); Console.WriteLine("Press [ ENTER ] to exit"); Console.ReadLine(); } static SpecificMailMessage writeMail() { Console.Write("Server: "); string server = Console.ReadLine(); Console.Write("Source: "); string source = Console.ReadLine(); Console.Write("Destination: "); string destination = Console.ReadLine(); Console.Write("Subject: "); string subject = Console.ReadLine(); Console.WriteLine("Body: "); string body = Console.ReadLine(); try { return new SpecificMailMessage( server, source, destination, subject, body); } catch (FormatException ex) { Console.WriteLine(ex.Message); return null; } } static void sendMail(Queue messages, bool debug) { int end = messages.Count; for (int i = 1; messages.Count > 0; i++) { SpecificMailMessage msg = messages.Dequeue(); Console.WriteLine("Sending Message [{0}/{1}]", i, end); Console.WriteLine(" - Relay: {0}", msg.Server); Console.WriteLine(" - Source: {0}", msg.Source); Console.WriteLine(" - Destination: {0}", msg.To); Console.WriteLine(); if (!debug) { msg.Deliver(); } else { Console.WriteLine("Debug: Would've sent message"); Console.WriteLine(); } } } } }