<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=3083332</guid>
        <pubDate>Thu, 23 Feb 2012 10:43:59 +0000</pubDate>
        <title>Реализация протокола POP3</title>
        <link>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=3083332</link>
        <description><![CDATA[2shae: коллеги с pop.gmail.com и порт=995 не работает, никто с gmail не сделал?]]></description>
        <author>2shae</author>
        <category>.NET FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=2396306</guid>
        <pubDate>Tue, 13 Oct 2009 19:15:51 +0000</pubDate>
        <title>Реализация протокола POP3</title>
        <link>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=2396306</link>
        <description><![CDATA[___BornInUssr___: Ребята, вот такой вопрос: Как автоматически определить настройки почтового сервера? <br>Пример: в Outlook вводим только логин, пароль, почтовый адрес и все. А Outlook сам автоматом определяет pop3.domain и порт. <br>Определяет даже не стандартные порты и необходимость использования SSL.]]></description>
        <author>___BornInUssr___</author>
        <category>.NET FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=2313203</guid>
        <pubDate>Thu, 16 Jul 2009 10:28:47 +0000</pubDate>
        <title>Реализация протокола POP3</title>
        <link>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=2313203</link>
        <description><![CDATA[SmartX: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;If otvet.Substring(0, 4) = &quot;-ER&quot;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
В любом случае вернёт false. Независимо от того что будет в переменной otvet.<br>
Правильно будет либо так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;If otvet.Substring(0, 3) = &quot;-ER&quot;</div></ol></div></div></div></div><br>
либо так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;If otvet.Substring(0, 4) = &quot;-ERR&quot;</div></ol></div></div></div></div><br>
<br>
Кстати такой код отлично работает. Проверяно только что.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;private void button2_Click(object sender, EventArgs e)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NetworkStream ns;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StreamReader rs;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StreamWriter ws;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String response;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String userName = &quot;user@mail.ru&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String pass = &quot;password&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TcpClient client = new TcpClient();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client.Connect(&quot;pop.mail.ru&quot;, (Int32)110);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception ex)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Соединение не установлено! \n&quot; + ex.Message, &quot;Ошибка соединения!&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ns = client.GetStream();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rs = new StreamReader(ns);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ws = new StreamWriter(ns);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;response = rs.ReadLine();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ws.WriteLine(&quot;User &quot; + userName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ws.Flush();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;response = rs.ReadLine();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (response.Substring(0, 3) == &quot;-ER&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Неверный логин&quot;, &quot;Ошибка аутентификации&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client.Close();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ws.WriteLine(&quot;Pass &quot; + pass);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ws.Flush();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;response = rs.ReadLine();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (response.Substring(0, 3) == &quot;-ER&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Неверный пароль&quot;, &quot;Ошибка аутентификации&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client.Close();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Соединение установлено!&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client.Close();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div></ol></div></div></div></div>]]></description>
        <author>SmartX</author>
        <category>.NET FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=2305598</guid>
        <pubDate>Mon, 06 Jul 2009 08:45:22 +0000</pubDate>
        <title>Реализация протокола POP3</title>
        <link>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=2305598</link>
        <description><![CDATA[Pit-Bul: <strong class='tag-b'>zipa455</strong>, возможно сервер использует какой либо шифрованный метод аутеинтификации]]></description>
        <author>Pit-Bul</author>
        <category>.NET FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=2295243</guid>
        <pubDate>Mon, 22 Jun 2009 03:00:11 +0000</pubDate>
        <title>Реализация протокола POP3</title>
        <link>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=2295243</link>
        <description><![CDATA[zipa455: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=150640&view=findpost&p=1206254'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pit&#045;Bul &#064; <time class="tag-quote__quoted-time" datetime="2006-08-06T12:43:30+00:00">06.08.06, 12:43</time></span><div class='quote '><strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">3.Далее посылаем серверу пароль</span></strong><br>
 <br>
   <span class="tag-color tag-color-named" data-value="green" style="color: green">pass [****] &amp; chr(13) &amp; chr(10)</span>  Вместо **** указывается пароль.<br>
<br>
 На что сервер нам опять ответит следующим:<br>
 <span class="tag-color tag-color-named" data-value="green" style="color: green">+OK [какойто текст]</span> - пароль верный, продолжайте<br>
 <span class="tag-color tag-color-named" data-value="green" style="color: green">-ERR [какойто текст]</span> - ошибка, либо неверный пароль<br>
 <br>
 Вот код который это делает:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &#39;отправляем пароль</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;Pass &quot; &amp; pass &amp; Chr(13) &amp; Chr(10))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.Flush()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;otvet = sr.ReadLine</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;If otvet.Substring(0, 4) = &quot;-ER&quot; Then _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; MessageBox.Show(&quot;Неверный пароль&quot;, &quot;Ошибка&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error,_ </div><div class="code_line">MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly, False)</div></ol></div></div></div></div></div></div><br>
Сегодьня такой способ проверки пароля на сервере pop.mail.ru не работает. Выдаёт ошибку, что пароль неверный, а в переменной &quot;otvet&quot; текст такой: -ERR Unknown command:&quot;&quot;.   Жаль.]]></description>
        <author>zipa455</author>
        <category>.NET FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=1206254</guid>
        <pubDate>Sun, 06 Aug 2006 12:43:30 +0000</pubDate>
        <title>Реализация протокола POP3</title>
        <link>https://forum.sources.ru/index.php?showtopic=150640&amp;view=findpost&amp;p=1206254</link>
        <description><![CDATA[Pit-Bul: POP3 (Post Office Protocol version 3 - протокол приёма почты) нужен для приёма почты с почтового сервера. Использует 110 <br>
порт, по которому посылаются команды и текст письма. На написание этой статьи меня сподвигло то что после долгих поисков<br>
 в сети примера, показывающего как работать с POP3 протоколом с помощью VB.NET так и не привело к успеху, но благодаря <br>
FlyDead&#39;у, который поделился примером на С# (с хорошими коментариями) мне всетаки удалость приконектиться к 110 порту <br>
своего почтового сервера и забрать оттудого свою почту. Далее я приведу код любезно предоставленный FlyDead&#39;ом и подробно <br>
опишу код на VB.NET <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Public void CheckMail()</div><div class="code_line">{</div><div class="code_line">NetworkStream ns;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StreamReader sr; &nbsp;//два потока для чтения из потока</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StreamWriter sw; &nbsp;//и для записи в поток</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String response; //для хранения результата запроса</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TcpClient tcpClient = new TcpClient(); //создаем клиент</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tcpClient.Connect(cConfig.ServerPop,Convert.ToInt32(cConfig.PortPop)); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(SocketException sExc)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Соединение неустановлено \n&quot;+&quot;Проверьте настройки POP3 сервера и номер порта \n&quot;+sExc.Message);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(Exception eX)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Соединение неустановлено \n&quot;+eX.Message);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ns = tcpClient.GetStream(); //запускаем потоки</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sr = new StreamReader(ns);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw = new StreamWriter(ns);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;response = sr.ReadLine();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;User &quot; + cConfig.UserPop); //посылаем юзера</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw.Flush(); &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;response = sr.ReadLine(); //опять читаем что вернул сервер</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If (response.Substring(0,3) == &quot;-ER&quot;) //если вернул сообщение об ошибке</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Неверный логин&quot;,&quot;Ошибка аутентификации&quot;,MessageBoxButtons.OK,MessageBoxIcon.Error);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;Pass &quot; + cConfig.PasswordPop); //Послылаем пароль</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw.Flush(); //очистка</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;response = sr.ReadLine(); //опять читаем </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If (response.Substring(0,4) == &quot;-ERR&quot;) //если не ошибка то идем дальше</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Неверный пароль&quot;,&quot;Ошибка аутентификации&quot;,MessageBoxButtons.OK,MessageBoxIcon.Error);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;stat&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw.Flush();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;response = sr.ReadLine();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String[] nummess = response.Split(&#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Int totmessages;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;totmessages = Convert.ToInt16(nummess[1]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If (totmessages &#62; 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;notifyIcon1.Icon = (System.Drawing.Icon)resources.GetObject(&quot;2.ico&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(Convert.ToString(totmessages)+&quot; новых сообщений&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;notifyIcon1.Icon = (System.Drawing.Icon)resources.GetObject(&quot;1.ico&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tcpClient.Close();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div></ol></div></div></div></div><br>
<br>
<br>
<br>
<br>
А теперь все то же самое на VB.NET<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">1. Шаг первый, надо соединиться с сервером, вот код который это делает:</span></strong><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Dim client As Net.Sockets.TcpClient</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dim sr As IO.StreamReader</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dim sw As IO.StreamWriter</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dim ns As Net.Sockets.NetworkStream</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dim otvet As String</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;соединяемся с сервером</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;client = New Net.Sockets.TcpClient</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client.Connect(server, 110)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Catch e As Exception</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox.Show(&quot;Соединение не установленно&quot; + e.ToString, &quot;Ошибка&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly, False)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Return</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;End Try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ns = client.GetStream</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sr = New IO.StreamReader(ns, Encoding.ASCII, True) &#39;это то что отправляет наши команды на сервер</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw = New IO.StreamWriter(ns) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#39;а это то что читает ответы сервера </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;otvet = sr.ReadLine() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;это наш ответ от сервера</div></ol></div></div></div></div><br>
<br>
  На это нам сервер должен ответить +ОК [какойто текст]. В конце каждой отправленной сервером строки <br>
  обязательно символы перехода на новую строку(chr(13) &amp; chr(10))<br>
<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">2.Второй шаг, после утвердительного ответа сервера отправляем имя пользователя</span></strong><br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"><br>
               user [имя] &amp; chr(13) &amp; chr(10)<br>
</span>               <br>
 На что сервер нам может ответить следующее:<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"><br>
 +OK [какойто текст] </span>- такой пользователь существует, продолжайте<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"> -ERR [какойто текст] - ошибка, либо такого пользователя нет<br>
</span><br>
Вот код который это делает:<br>
<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;User &quot; &amp; user &amp; Chr(13) &amp; Chr(10))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.Flush()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;otvet = sr.ReadLine()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;If otvet.Substring(0, 3) = &quot;-ER&quot; Then _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; MessageBox.Show(&quot;Неверный логин&quot;, &quot;Ошибка&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error,_ </div><div class="code_line">MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly, False)</div></ol></div></div></div></div><br>
<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">3.Далее посылаем серверу пароль</span></strong><br>
 <br>
   <span class="tag-color tag-color-named" data-value="green" style="color: green">pass [****] &amp; chr(13) &amp; chr(10)</span>  Вместо **** указывается пароль.<br>
<br>
 На что сервер нам опять ответит следующим:<br>
 <span class="tag-color tag-color-named" data-value="green" style="color: green">+OK [какойто текст]</span> - пароль верный, продолжайте<br>
 <span class="tag-color tag-color-named" data-value="green" style="color: green">-ERR [какойто текст]</span> - ошибка, либо неверный пароль<br>
 <br>
 Вот код который это делает:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &#39;отправляем пароль</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;Pass &quot; &amp; pass &amp; Chr(13) &amp; Chr(10))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.Flush()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;otvet = sr.ReadLine</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;If otvet.Substring(0, 4) = &quot;-ER&quot; Then _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; MessageBox.Show(&quot;Неверный пароль&quot;, &quot;Ошибка&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error,_ </div><div class="code_line">MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly, False)</div></ol></div></div></div></div><br>
<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">4.Теперь можно определить количество новых писем на сервере, и их общий объём, для этого отправим</span></strong><br>
          <span class="tag-color tag-color-named" data-value="green" style="color: green">stat</span><br>
        <br>
Ответом будет <br>
           <span class="tag-color tag-color-named" data-value="green" style="color: green">+OK [кол-во] [объем]</span> <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;Dim nummess As Array</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dim totmessages As Integer</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;stat&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.Flush()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;otvet = sr.ReadLine()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;nummess = otvet.Split(&quot; &quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;totmessages = CInt(nummess(1))</div></ol></div></div></div></div><br>
<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">5.Для того чтобы определить индексы писем и объем каждого по отдельности, отправляем</span></strong><br>
              <span class="tag-color tag-color-named" data-value="green" style="color: green">list</span><br>
        <br>
 Сервер ответит списком с номером и объемом письма<br>
        <span class="tag-color tag-color-named" data-value="green" style="color: green">+OK 2 messages 320<br>
        1 120<br>
        2 200<br>
        .       </span><br>
Список оканчивается переходом на новую строку и знаком &quot;.&quot;<br>
   <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;Dim i As Integer</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dim MessageArr() As String</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&#39;получаем идеинтификаторы писем</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;list&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.Flush()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;otvet = sr.ReadLine()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Debug.Print(otvet)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;myArr = otvet.Split(&quot; &quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ReDim MessageArr(totmessages - 1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;For i = 0 To CInt(myArr(1)) - 1</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageArr(i) = (sr.ReadLine())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Next</div></ol></div></div></div></div><br>
<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">6.Теперь мы можем производить разные операции с письмами </span></strong><br>
        <span class="tag-color tag-color-named" data-value="green" style="color: green"> dele [x] </span><br>
Удаление сообщения номер x. Изменения вступают в силу только после корректного<br>
закрытия соединения.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;dele x&quot;) &#39;х это идеинтификатор письма</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sw.Flush()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;otvet = sr.ReadLine()</div></ol></div></div></div></div><br>
<br>
<br>
 Возможные ответы:<br>
     <span class="tag-color tag-color-named" data-value="green" style="color: green"> +OK [какойто текст] </span> - письмо удалено <br>
     <span class="tag-color tag-color-named" data-value="green" style="color: green"> -ERR [какойто текст] </span>- нет письма с таким идеинтификатором<br>
<br>
       <span class="tag-color tag-color-named" data-value="green" style="color: green"> retr [x] </span><br>
Приём сообщения номер x. Оно оканчивается переходом на новую строку и знаком &quot;.&quot;<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&#39;получаем письма</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Dim x As Integer = 0</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sr = New IO.StreamReader(ns, Encoding.Default, True) &#39;Encoding.Default вот чего не хватало для чтения руских букв </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;For i = 0 To (totmessages - 1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw.WriteLine(&quot;retr &quot; &amp; (i + 1))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sw.Flush()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FileOpen(1, Application.StartupPath &amp; &quot;\mails\Mail&quot; &amp; MessageArr(i) &amp; &quot;.txt&quot;, OpenMode.Append, OpenAccess.Write)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Do While otvet &#60;&#62; &quot;.&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;otvet = sr.ReadLine</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Debug.Print(otvet)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Print(1, otvet &amp; vbNewLine)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Loop</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FileClose(1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Next i</div></ol></div></div></div></div><br>
<br>
   Возможные ответы:<br>
     <span class="tag-color tag-color-named" data-value="green" style="color: green"> +OK [какойто текст] </span>- вот ваше письмо<br>
      <span class="tag-color tag-color-named" data-value="green" style="color: green">-ERR [какойто текст] </span>- нет такого письма<br>
<br>
   Примеры:<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"><br>
       +OK 120 octets<br>
       [заголовок письма]<br>
       [текст письма]<br>
       . </span><br>
       <br>
      <br>
       <br>
               <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">  Дополнительные POP3 команды </span></strong><br>
<br>
   Следующие дополнительные команды дают вам большую свободу при работе с<br>
   сообщениями: <br>
   <br>
   Команда:<span class="tag-color tag-color-named" data-value="green" style="color: green">  TOP [сообщение] [n] </span><br>
<br>
   Аргументы: [сообщение] - номер сообщения [n] - положительное число <br>
   (обязательный аргумент)<br>
<br>
   Описание: Если ответ сервера положительный, то после него он передаёт<br>
   заголовки сообщения и указанное кол - во строк из тела сообщения.<br>
   <br>
   Возможные ответы:<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"> <br>
        +OK top of message follows <br>
        -ERR no such message<br>
</span>   <br>
   Примеры: <br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"><br>
           C: TOP 1 10 S: +OK <br>
           S: &lt;здесь POP3 сервер передаёт заголовки<br>
               первого сообщения и первые 10-ть строк из тела сообщения.&gt; <br>
           S: . ... <br>
           C: TOP 100 3 <br>
           S: -ERR no such message <br>
</span>   <br>
   <br>
   Команда:<span class="tag-color tag-color-named" data-value="green" style="color: green"> UIDL [сообщение] </span> <br>
   Аргументы: [сообщение] - номер сообщения (необязательный аргумент). <br>
   <br>
   Описание: Если был указан номер сообщения, то сервер выдаёт уникальный<br>
   идентификатор для этого сообщения. Если аргумент не был передан, то<br>
   идентификаторы перечисляются для всех сообщений, кроме помеченных для<br>
   удаления. <br>
   <br>
   Возможные ответы: <br>
        <span class="tag-color tag-color-named" data-value="green" style="color: green">+OK unique-id listing follows <br>
        -ERR no such message</span> <br>
        <br>
   Примеры: <br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"><br>
           C: UIDL S: +OK <br>
           S: 1 whqtswO00WBw418f9t5JxYwZ <br>
           S: 2 QhdPYR:00WBw1Ph7x7 <br>
           S: . ... <br>
           C: UIDL 2 <br>
           S: +OK 2 QhdPYR:00WBw1Ph7x7 ...<br>
           C: UIDL 3 <br>
           S: -ERR no such message, only 2 messages in maildrop<br>
<br>
</span><br>
   <br>
   Команда:<span class="tag-color tag-color-named" data-value="green" style="color: green">loop</span><br>
   Эта команда просто говорит серверу, что мы ещё висим на порту, чтобы он не закрывал соединение<br>
   после длительной паузы.<br>
<br>
   Команда:<span class="tag-color tag-color-named" data-value="green" style="color: green">quit</span><br>
   Закрытие соединения.<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Эта тема была разделена из темы &quot;<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=135984' target='_blank'>Наполнение и развитие FAQ</a>&quot;</span></span>]]></description>
        <author>Pit-Bul</author>
        <category>.NET FAQ</category>
      </item>
	
      </channel>
      </rss>
	