0

我正在使用SMTPClientapp.config

  <system.net>
    <mailSettings>
      <smtp from="mailer &lt;no_reply@mysite.com&gt;">
        <network defaultCredentials="true" host="192.168.1.101" port="25"/>
      </smtp>
    </mailSettings>
  </system.net>

有没有办法添加更多的 SMTP 服务器(比如 4 个服务器)并让代码循环使用哪个 SMTP 服务器?

例如,我有 4 个 SMTP 服务器:192.168.1.101、192.168.1.102、192.168.1.103、192.168.1.104,我有8 封电子邮件要发送。

我希望实现的是:

Mail 1 sent using 192.168.1.101
Mail 2 sent using 192.168.1.102
Mail 3 sent using 192.168.1.103
Mail 4 sent using 192.168.1.104
Mail 5 sent using 192.168.1.101
Mail 6 sent using 192.168.1.102
Mail 7 sent using 192.168.1.103
Mail 8 sent using 192.168.1.104
4

1 回答 1

0

实施一些事情来做到这一点将是相当微不足道的(并且有一百万种方法可以解决这个问题,所以我相信有人有更好的方法),但这将是一种快速/简单的方法来获得你正在寻找的效果。我假设你有办法在你的应用程序中把它变成一个持久对象。

public class SmtpQueue
{
    private Queue<string> _queue;

    public SmtpQueue(string[] ips)
    {
        _queue = new Queue<string>();

        LoadIps(ips);
    }

    private void LoadIps(string[] ips)
    {
        // load the ips
        foreach (string ip in ips)
            _queue.Enqueue(ip);
    }

    public string GetNext()
    {
        string nextIp = _queue.Dequeue();
        _queue.Enqueue(nextIp);
        return nextIp;
    }
}

你会像这样消费它:

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
client.Host = mySmtpQueueInstance.GetNext();

无论你最终做什么,都不要过度复杂化。一般来说,这将是您使用 DNS 完成的事情,如果可能,我会推荐这种方法。

于 2012-10-17T06:01:27.493 回答