Как я могу отправлять электронные письма со временем ожидания в C #? - PullRequest
0 голосов
/ 21 января 2019

Я хочу отправлять электронные письма с таким ожиданием:

Вы получаете список всех получателей из TXT-файла и устанавливаете время (например, 50 секунд и 20 человек). Необходимо отправить электронное письмо 20 людям и подождать 50 секунд, после чего продолжить отправку писем из этого списка. .

Я думаю, что до этого должен быть этот код:

SmtpServer.Send(message);

нравится подождать некоторое время, а затем продолжать отправлять электронные письма ...

Я не знаю, может быть, стандартная System.Net.Mail библиотека не имеет такой функции. Может быть, мы можем использовать библиотеку EASendMail , но у меня нет никакой информации об ее использовании.

ДЛЯ ДРУГОГО ПРИМЕРА: Представьте, что я компания, которой нужно отправлять 1000 писем работникам. Если я отправлю его напрямую, мой IP-адрес будет занесен в красный список, и мои письма будут отправлены в «СПАМБУКС», и мои сотрудники не смогут увидеть мою важную почту. Мне нужно отправить их следующим образом: отправьте 10 работников, затем подождите 1 минуту , после этого продолжайте отправлять 10 работников и дождитесь 1 минута ... Так и должно быть. Но я не могу найти способ сделать это.

Вы можете мне помочь?

1 Ответ

0 голосов
/ 21 января 2019

Наконец, после некоторых исследований я пришел к этому коду. В основном у меня есть две переменные (peopleToWait и secondsToWait) и список получателей (через которые я зацикливаюсь). Я создал небольшой метод SendMail для отправки электронных писем. Вот код:

  static void Main(string[] args)
    {

        var receivers = new List<List<string>>();

        var group1 = new List<string>();
        group1.Add("Email1");
        group1.Add("Email2");
        group1.Add("Email3");

        receivers.Add(group1);
        var group2 = new List<string>();

        group2.Add("Email4");
        group2.Add("Email5");
        group2.Add("Email6");

        receivers.Add(group2);

        var group3 = new List<string>();
        group3.Add("Email7");
        group3.Add("Email8");
        group3.Add("Email9");
        receivers.Add(group3);

        var group4 = new List<string>();
        group4.Add("Email10");
        group4.Add("Email11");
        group4.Add("Email12");
        receivers.Add(group4);

        var secondsToWait = 3;

        foreach (var receiver in receivers)
        {
            ParameterizedThreadStart pts = new ParameterizedThreadStart(SendMail);
            Thread th = new Thread(pts);
            th.Start(receiver);

            Thread.Sleep(secondsToWait * 1000);
        }


        Console.ReadLine();
    }

    static void SendMail(object Email)
    {

        var group = (List<string>)Email;

        //MailMessage abcd = new MailMessage();
        //abcd.To.Add(String.Join(",", group));
        Console.WriteLine("Sending Mail to " + String.Join(",", group));
    }
...