rendered paste bodyusing 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();
}
}
}
}
}