Получить значение из списка и работать с ним
Я пытаюсь создать приложение, отправляющее электронные письма через носки, сообщения будут отправляться за сообщение, если первое сообщение отправляется через носки, второе должно использовать другие носки, что я делаю в своем приложении, если я, когда я получаю информацию из TXT-файл, и я добавляю в список:
try
{
SmtpServer oServer = new SmtpServer("");
var list = new List<string>();
var input = File.ReadAllText(@"C:\New folder\SendMail6\socks-list.txt");
var r = new Regex(@"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})");
foreach (Match match in r.Matches(input))
{
string ip = match.Groups[1].Value;
string port = match.Groups[2].Value;
list.Add(ip);
list.Add(port);
}
foreach (string ip in list)
{
}
}
catch(Exception)
{
}
что я хочу этого
oServer.SocksProxyServer = "37.187.118.174";
oServer.SocksProxyPort = 14115;
берет значения из списка, который я заполнил значениями ip и портом, и
если первое письмо отправлено с помощью ip, то второе письмо использует другой ip в списке, не отправлять буксируемое электронное письмо, за которым следует тот же ip
Спасибо
1 ответ
Решение
Вам нужно создать класс для IP и порта
public class IpAndPort
{
public string IpAddress { get; set; }
public string Port { get; set; }
}
Теперь используйте ConcurrentBag
using System.Collections.Concurrent;
//------
var ips = new ConcurrentBag<IpAndPort>();
var input = File.ReadAllText(@"C:\New folder\SendMail6\socks-list.txt");
var r = new Regex(@"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})");
foreach (Match match in r.Matches(input))
{
string ip = match.Groups[1].Value;
string port = match.Groups[2].Value;
if(ips.Any(x => x.IpAddress.Trim() == ip.Trim()))
continue;
ips.Add(new IpAndPort { IpAddress = ip, Port = port});
}
Теперь отправьте сообщение, взяв значения из ConcurrentBag
while (!ips.IsEmpty)
{
IpAndPort ipAndPort;
if (!ips.TryTake(out ipAndPort)) continue;
try
{
//code here to send message using below IP and Port
var ip = ipAndPort.IpAddress;
var port = ipAndPort.Port;
/----
oServer = new SmtpServer("");
oServer.SocksProxyServer = ip;
oServer.SocksProxyPort = port;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}