<?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=379597&amp;view=findpost&amp;p=3336842</guid>
        <pubDate>Tue, 16 Jul 2013 20:10:59 +0000</pubDate>
        <title>Проблемы с почтовым клиентом (TIdSMTP, TIdPOP3)</title>
        <link>https://forum.sources.ru/index.php?showtopic=379597&amp;view=findpost&amp;p=3336842</link>
        <description><![CDATA[Хорт: <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">unit Unit1;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,</div><div class="code_line">&nbsp;&nbsp;Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,</div><div class="code_line">&nbsp;&nbsp;IdTCPClient, IdMessageClient, IdPOP3, IdMessage,EncdDecd;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TForm1 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdPOP31: TIdPOP3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Button1: TButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Edit1: TEdit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Edit2: TEdit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Edit3: TEdit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdMessage1: TIdMessage;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Button1Click(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Private declarations }</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Public declarations }</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Form1: TForm1;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.Button1Click(Sender: TObject);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;i:integer;</div><div class="code_line">&nbsp;&nbsp;mescount:integer;</div><div class="code_line">&nbsp;&nbsp;s:string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; CreateDir(&#39;c:\email&#39;);</div><div class="code_line">&nbsp;&nbsp; showmessage(&#39;Создана директория c:\email&#39;);</div><div class="code_line">&nbsp;&nbsp; idPOP31.Username:=edit1.Text;</div><div class="code_line">&nbsp;&nbsp; idPOP31.Password:=edit2.text;</div><div class="code_line">&nbsp;&nbsp; idPOP31.Host:=edit3.text;</div><div class="code_line">&nbsp;&nbsp; idPOP31.Connect();</div><div class="code_line">&nbsp;&nbsp; mescount:=idPOP31.CheckMessages;</div><div class="code_line">&nbsp;&nbsp; idPOP31.Retrieve(mescount,idMessage1);</div><div class="code_line">&nbsp;&nbsp; showmessage(&#39;в ящике - &#39;+inttostr(mescount)+&#39; писем&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for i :=0 to idMessage1.MessageParts.Count-1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s:= TIdAttachment(IdMessage1.MessageParts[i]).FileName;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete(s,1,pos(&#39;UTF-8&#39;,s)+7); &nbsp;//делал под конкретную кодировку аля c mail.ru на mail.ru</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; delete(s,length(s)-1,2); &nbsp; &nbsp; &nbsp;//делал под конкретную кодировку аля c mail.ru на mail.ru</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s:=DecodeString(s); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//делал под конкретную кодировку аля c mail.ru на mail.ru</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;showmessage(&#39;получен файл &#39;+s);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TIdAttachment(IdMessage1.MessageParts.Items[i]).SaveToFile(&#39;c:\email\&#39;+s);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;idpop31.disconnect;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
пример работает, но нужно допиливать]]></description>
        <author>Хорт</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=379597&amp;view=findpost&amp;p=3335336</guid>
        <pubDate>Fri, 12 Jul 2013 10:15:09 +0000</pubDate>
        <title>Проблемы с почтовым клиентом (TIdSMTP, TIdPOP3)</title>
        <link>https://forum.sources.ru/index.php?showtopic=379597&amp;view=findpost&amp;p=3335336</link>
        <description><![CDATA[erslgoeirjh: В моей программе реализован почтовый клиент, использующий классы TIdSMTP и TIdPOP3. Среда разработки--Delphi 7.<br>
<br>
Вот код:<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">mMessege.Clear;</div><div class="code_line">mSMTP.AuthenticationType := atLogin;</div><div class="code_line">mSMTP.Username := &#39;user&#39;;</div><div class="code_line">mSMTP.Password := &#39;password&#39;;</div><div class="code_line">mSMTP.Host := &#39;192.1.2.3&#39;;</div><div class="code_line">mSMTP.Port := 25;</div><div class="code_line">mMessege.CharSet := &#39;windows-1251&#39;;</div><div class="code_line">mMessege.ContentType := &#39;text/plain&#39;;</div><div class="code_line">mMessege.Subject := &#39;My Text&#39;;</div><div class="code_line">mMessege.Body.Add(&#39;My Text&#39;);</div><div class="code_line">mMessege.From.Address := &#39;myaddress@myserver.ru&#39;;</div><div class="code_line">mMessege.Recipients.EMailAddresses := &#39;myaddress@myserver.ru&#39;;</div><div class="code_line">myfilename := &#39;mytextfile.txt&#39;;</div><div class="code_line">fe := FileExists(myfilename);</div><div class="code_line">if (fe=true) then begin</div><div class="code_line">TIdAttachment.Create(mMessege.MessageParts, myfilename);</div><div class="code_line">end;</div><div class="code_line">//mMessege.IsEncoded := true;</div><div class="code_line">try</div><div class="code_line">mSMTP.Connect;</div><div class="code_line">mSMTP.Send(mMessege);</div><div class="code_line">except</div><div class="code_line">ShowMessage(&#39;Ошибка соединения с сервером!&#39;);</div><div class="code_line">end;</div><div class="code_line">mSMTP.Disconnect;</div><div class="code_line">mMessege.Clear;</div><div class="code_line">Exit;</div></ol></div></div></div></div><br>
<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">iMess := mPop.CheckMessages; </div><div class="code_line">&nbsp;</div><div class="code_line">If iMess = 0 then begin</div><div class="code_line">WriteToLog(&#39;на сервере отсутствуют сообщения!&#39;);</div><div class="code_line">RxTrayIcon1.Hint := &#39;на сервере отсутствуют сообщения!&#39;;</div><div class="code_line">iTimer :=IniTool.ReadInteger(&#39;Time&#39;, &#39;Timer&#39;, 15)*60;</div><div class="code_line">Timer1.Enabled := True;</div><div class="code_line">RxTimerPOP.Enabled := True;</div><div class="code_line">Exit;</div><div class="code_line">end;{end If iMess = 0}</div><div class="code_line">&nbsp;</div><div class="code_line">WriteToLog(&#39;На сервере &#39; + IntToStr(iMess) + &#39;новых сообщений!&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">For ii := 1 to iMess do begin</div><div class="code_line">mMessege.Clear;</div><div class="code_line">&nbsp;</div><div class="code_line">strFileName.Clear;</div><div class="code_line">strFormatNam.Clear;</div><div class="code_line">strTableName.Clear;</div><div class="code_line">strDataWrite.Clear;</div><div class="code_line">strAutorName.Clear;</div><div class="code_line">&nbsp;</div><div class="code_line">sForShablon:=&#39;&#39;;</div><div class="code_line">mPOP.RetrieveHeader(ii, mMessege);</div><div class="code_line">ctenc := mMessege.ContentTransferEncoding;</div><div class="code_line">if (ctenc=&#39;&#39;) then begin</div><div class="code_line">// если есть кодировка в сообщении</div><div class="code_line">mMessege.Clear;</div><div class="code_line">mMessege.NoDecode := true;</div><div class="code_line">mPOP.Retrieve(ii, mMessege);</div><div class="code_line">end</div><div class="code_line">else begin</div><div class="code_line">// если нет кодировки в сообщении</div><div class="code_line">mMessege.Clear;</div><div class="code_line">mPOP.Retrieve(ii, mMessege);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">FMimeMsg := TMimeMess.Create;</div><div class="code_line">FMimeMsg.Clear;</div><div class="code_line">FMimeMsg.Lines.SetText(mMessege.Body.GetText);</div><div class="code_line">FMimeMsg.DecodeMessage;</div><div class="code_line">FMimePart := FMimeMsg.MessagePart;</div><div class="code_line">for i := 0 to FMimePart.GetSubPartCount — 1 do begin</div><div class="code_line">FMimePart2 := FMimePart.GetSubPart(i);</div><div class="code_line">if FMimePart2.FileName &#60;&#62; &#39;&#39; then begin</div><div class="code_line">FMimePart2.DecodePart;</div><div class="code_line">FMimePart2.DecodedLines.SaveToFile(MainPath +&#39;\Buffer\&#39; + FMimePart2.FileName) ;</div><div class="code_line">end;</div><div class="code_line">end;</div><div class="code_line">FMimeMsg.Clear;</div><div class="code_line">for i:=0 to (mMessege.MessageParts.Count-1) do begin</div><div class="code_line">if (mMessege.MessageParts.Items[i].ClassType=TIdAttachment) then begin</div><div class="code_line">filename := MainPath + &#39;\Buffer\&#39;+ (mMessege.MessageParts.Items[i] as TIdAttachment).FileName;</div><div class="code_line">CopyFile(PChar(mMessege.MessageParts.Items[i].StoredPathName),PChar(filename),true);</div><div class="code_line">end;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<br>
Сообщение нормально отправляется на сервер.<br>
Но при приёме сообщения с сервера почему-то не считывается аттач (вложение) -- файл mytextfile.txt . То есть почему-то не проходит ни часть кода FMimeMsg--там FMimePart.GetSubPartCount равно нулю, ни часть кода с mMessege.MessageParts -- там также mMessege.MessegeParts.Count также равно нулю.<br>
В чём причина этого? Что надо сделать так, чтобы аттач вытаскивался (в первую очередь меня интересует вариант с mMessege.MessegeParts, но также интересует и вариант с FMimeMsg.MessagePart )?]]></description>
        <author>erslgoeirjh</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	