首页 > 解决方案 > 如何在 C# 中发送带有等待时间的电子邮件?

问题描述

我想发送等待这样的电子邮件:

您从 .txt 文件中获取所有收件人列表并设置时间(例如:50 秒和 20 人)它需要向 20 人发送电子邮件并等待 50 秒然后继续从该列表发送邮件。

我认为它需要在此代码之前:

SmtpServer.Send(message);

比如稍等片刻,然后继续发送电子邮件...

我不知道标准System.Net.Mail库可能没有这样的功能。也许我们可以使用EASendMail库,但我没有任何关于使用它的信息。

再举一个例子: 假设我是一家需要向员工发送1000封邮件的公司。如果我直接发送,我的 IP 将被列为红色,我的邮件会转到“SPAMBOX”,我的工作人员看不到我的重要邮件。我需要像这样发送他们:发送10名工人然后等待1 分钟,然后继续发送10名工人并等待1分钟......它需要像这样。但我找不到办法做到这一点。

你能帮助我吗?

标签: c#emailhtml-emaileasendmail

解决方案


最后在做了一些研究之后,我来到了这段代码。基本上我有两个变量(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));
    }

推荐阅读