public static void Main(string[] args) { var result = CommandLine.Parser.Default.ParseArguments <Options>(args); result.WithParsed(options => { DownloadWebpage(options.Url).ContinueWith( (messageTask) => { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: QueueName, durable: false, exclusive: false, autoDelete: false, arguments: null); var messageContent = messageTask.Result; // TODO: Should be sent encoded? SSL? var simpleEmail = new SimpleSmtpEmail { SmtpUser = options.SmtpUser, SmtpPassword = options.SmtpPassword, SmtpAddress = options.SmtpAddress, SmtpPort = options.SmtpPort, NameTo = options.NameTo, EmailTo = options.EmailTo, NameFrom = options.NameFrom, EmailFrom = options.EmailFrom }; if (IsClassPresent(messageContent, options.Class)) { simpleEmail.Subject = options.EmailSubjectPositive; simpleEmail.Content = options.EmailContentPositive; } else { simpleEmail.Subject = options.EmailSubjectNegative; simpleEmail.Content = options.EmailContentNegative; } QueueSendingEmail(channel, simpleEmail); } } ); }); Console.ReadKey(); }
private static void QueueSendingEmail(IModel channel, SimpleSmtpEmail simpleEmail) { var message = JsonConvert.SerializeObject(simpleEmail); var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: "", routingKey: QueueName, basicProperties: null, body: body); Console.WriteLine(" [x] Sent"); }
private static void SendEmail(SimpleSmtpEmail mail) { try { using (var client = new SmtpClient()) { // TODO: What does this do specifically? // For demo-purposes, accept all SSL certificates client.ServerCertificateValidationCallback = (s, c, h, e) => true; client.Connect(mail.SmtpAddress, mail.SmtpPort, false); client.AuthenticationMechanisms.Remove("XOAUTH2"); client.Authenticate(mail.SmtpUser, mail.SmtpPassword); var message = new MimeMessage(); message.From.Add(new MailboxAddress(mail.NameFrom, mail.EmailFrom)); message.To.Add(new MailboxAddress(mail.NameTo, mail.EmailTo)); message.Subject = mail.Subject; message.Body = new TextPart("plain") { Text = mail.Content }; client.Send(message); client.Disconnect(true); Console.WriteLine("Email sent."); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }