Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Parallel.ForEach(records, item => { // в records домены
- var serv = item.ExchangeDomainName?.ToString();
- serv = serv.Substring(0, serv.Length - 1);
- Task<bool> task1 = new Task<bool>(() => TrySendMail(serv, user + "@" + serv, pass, "mail@mail.ru", "Test", "dont worry", 25));
- task1.Start();
- Task<bool> task2 = new Task<bool>( () => TrySendMail(serv, user + "@" + serv, pass, "mail@mail.ru", "Test", "dont worry", 465));
- task2.Start();
- Task<bool> task3 = new Task<bool>(() => TrySendMail(serv, user + "@" + serv, pass, "mail@mail.ru", "Test", "dont worry", 587));
- task3.Start();
- Task.WaitAll(new Task[] { task1,task2,task3});
- if (task1.Result)
- MessageBox.Show("good" + user + "@" + serv +";25");
- if (task2.Result)
- MessageBox.Show("good" + user + "@" + serv + ";465");
- if (task3.Result)
- MessageBox.Show("good" + user + "@" + serv + ";587");
- });
- public bool TrySendMail(string smtpServer, string from, string password, string mailto, string caption, string message, int port, string attachFile = null)
- {
- try
- {
- MailMessage mail = new MailMessage();
- mail.From = new MailAddress(from);
- mail.To.Add(new MailAddress(mailto));
- mail.Subject = caption;
- mail.Body = message;
- if (!string.IsNullOrEmpty(attachFile))
- mail.Attachments.Add(new Attachment(attachFile));
- SmtpClient client = new SmtpClient();
- client.Host = smtpServer;
- client.Port = port;
- client.EnableSsl = true;
- client.Credentials = new NetworkCredential(from.Split('@')[0], password);
- client.DeliveryMethod = SmtpDeliveryMethod.Network;
- client.Send(mail);
- // await client.SendMailAsync(mail);
- mail.Dispose();
- return true;
- }
- catch
- {
- return false;
- }
- }
- var tasks = new List<Task>();
- foreach (var record in records)
- {
- tasks.Add(Task.Run(() =>
- {
- var serv = record.ExchangeDomainName?.ToString();
- serv = serv.Substring(0, serv.Length - 1);
- var mailFrom = $"{user}@{serv}";
- var ports = new[] { 25, 465, 587 };
- var taskForPorts = new Dictionary<int, Task<bool>>();
- foreach (var port in ports) //Ставим задачи на проверку отправки писем на конкретном порту
- {
- taskForPorts.Add(port, TrySendMailAsync(serv, mailFrom, pass, "mail@mail.ru", "Test", "dont worry", port));
- }
- Task.WaitAll(taskForPorts.Values.ToArray()); //Ожидаем завершения задач на проверку отправки писем на портах одного домена;
- foreach (var port in ports)
- {
- if (taskForPorts[port].Result)
- MessageBox.Show($"good {mailFrom};{port}"); //Тут точно нужна ";"?
- }
- }));
- }
- Task.WaitAll(tasks.ToArray());
- public async Task<bool> TrySendMailAsync(string smtpServer, string from, string password, string mailto, string caption, string message, int port, string attachFile = null)
- {
- try
- {
- MailMessage mail = new MailMessage();
- mail.From = new MailAddress(from);
- mail.To.Add(new MailAddress(mailto));
- mail.Subject = caption;
- mail.Body = message;
- if (!string.IsNullOrEmpty(attachFile))
- mail.Attachments.Add(new Attachment(attachFile));
- SmtpClient client = new SmtpClient();
- client.Host = smtpServer;
- client.Port = port;
- client.EnableSsl = true;
- client.Credentials = new NetworkCredential(from.Split('@')[0], password);
- client.DeliveryMethod = SmtpDeliveryMethod.Network;
- await client.SendMailAsync(mail);
- mail.Dispose();
- return true;
- }
- catch
- {
- return false;
- }
- }
Add Comment
Please, Sign In to add comment