All pastes #573479 Raw Edit

Someone

public text v1 · immutable
·published 2007-06-18 05:21 UTC
rendered paste body
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<SpecificMailMessage> messages = new Queue<SpecificMailMessage>(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<SpecificMailMessage> 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();
                }
            }
        }
    }
}