我使用的SMTPClient
类在app.config
<system.net>
<mailSettings>
<smtp from="mailer <no_reply@mysite.com>">
<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
答案 0 :(得分: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完成的工作,如果可能,我建议采用这种方法。