Guest User

Untitled

a guest
Nov 17th, 2017
494
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.13 KB | None | 0 0
  1. Parallel.ForEach(records, item => { // в records домены
  2.  
  3. var serv = item.ExchangeDomainName?.ToString();
  4. serv = serv.Substring(0, serv.Length - 1);
  5.  
  6. Task<bool> task1 = new Task<bool>(() => TrySendMail(serv, user + "@" + serv, pass, "mail@mail.ru", "Test", "dont worry", 25));
  7. task1.Start();
  8. Task<bool> task2 = new Task<bool>( () => TrySendMail(serv, user + "@" + serv, pass, "mail@mail.ru", "Test", "dont worry", 465));
  9. task2.Start();
  10. Task<bool> task3 = new Task<bool>(() => TrySendMail(serv, user + "@" + serv, pass, "mail@mail.ru", "Test", "dont worry", 587));
  11. task3.Start();
  12.  
  13.  
  14. Task.WaitAll(new Task[] { task1,task2,task3});
  15.  
  16. if (task1.Result)
  17. MessageBox.Show("good" + user + "@" + serv +";25");
  18. if (task2.Result)
  19. MessageBox.Show("good" + user + "@" + serv + ";465");
  20. if (task3.Result)
  21. MessageBox.Show("good" + user + "@" + serv + ";587");
  22.  
  23. });
  24.  
  25. public bool TrySendMail(string smtpServer, string from, string password, string mailto, string caption, string message, int port, string attachFile = null)
  26. {
  27. try
  28. {
  29. MailMessage mail = new MailMessage();
  30. mail.From = new MailAddress(from);
  31. mail.To.Add(new MailAddress(mailto));
  32. mail.Subject = caption;
  33. mail.Body = message;
  34. if (!string.IsNullOrEmpty(attachFile))
  35. mail.Attachments.Add(new Attachment(attachFile));
  36. SmtpClient client = new SmtpClient();
  37. client.Host = smtpServer;
  38. client.Port = port;
  39.  
  40. client.EnableSsl = true;
  41. client.Credentials = new NetworkCredential(from.Split('@')[0], password);
  42. client.DeliveryMethod = SmtpDeliveryMethod.Network;
  43. client.Send(mail);
  44. // await client.SendMailAsync(mail);
  45.  
  46. mail.Dispose();
  47. return true;
  48. }
  49. catch
  50. {
  51. return false;
  52. }
  53.  
  54. }
  55.  
  56. var tasks = new List<Task>();
  57. foreach (var record in records)
  58. {
  59. tasks.Add(Task.Run(() =>
  60. {
  61. var serv = record.ExchangeDomainName?.ToString();
  62. serv = serv.Substring(0, serv.Length - 1);
  63. var mailFrom = $"{user}@{serv}";
  64. var ports = new[] { 25, 465, 587 };
  65.  
  66. var taskForPorts = new Dictionary<int, Task<bool>>();
  67. foreach (var port in ports) //Ставим задачи на проверку отправки писем на конкретном порту
  68. {
  69. taskForPorts.Add(port, TrySendMailAsync(serv, mailFrom, pass, "mail@mail.ru", "Test", "dont worry", port));
  70. }
  71.  
  72. Task.WaitAll(taskForPorts.Values.ToArray()); //Ожидаем завершения задач на проверку отправки писем на портах одного домена;
  73.  
  74. foreach (var port in ports)
  75. {
  76. if (taskForPorts[port].Result)
  77. MessageBox.Show($"good {mailFrom};{port}"); //Тут точно нужна ";"?
  78. }
  79. }));
  80. }
  81. Task.WaitAll(tasks.ToArray());
  82.  
  83. public async Task<bool> TrySendMailAsync(string smtpServer, string from, string password, string mailto, string caption, string message, int port, string attachFile = null)
  84. {
  85. try
  86. {
  87. MailMessage mail = new MailMessage();
  88. mail.From = new MailAddress(from);
  89. mail.To.Add(new MailAddress(mailto));
  90. mail.Subject = caption;
  91. mail.Body = message;
  92. if (!string.IsNullOrEmpty(attachFile))
  93. mail.Attachments.Add(new Attachment(attachFile));
  94. SmtpClient client = new SmtpClient();
  95. client.Host = smtpServer;
  96. client.Port = port;
  97.  
  98. client.EnableSsl = true;
  99. client.Credentials = new NetworkCredential(from.Split('@')[0], password);
  100. client.DeliveryMethod = SmtpDeliveryMethod.Network;
  101. await client.SendMailAsync(mail);
  102.  
  103. mail.Dispose();
  104. return true;
  105. }
  106. catch
  107. {
  108. return false;
  109. }
  110. }
Add Comment
Please, Sign In to add comment