<?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=280923&amp;view=findpost&amp;p=2632916</guid>
        <pubDate>Tue, 29 Jun 2010 14:47:21 +0000</pubDate>
        <title>при отправке письма используя Indy 10, получаются &amp;quot;крякозябры&amp;quot; в теме</title>
        <link>https://forum.sources.ru/index.php?showtopic=280923&amp;view=findpost&amp;p=2632916</link>
        <description><![CDATA[User32: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=280923&view=findpost&p=2426572'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>mvdmvd &#064; <time class="tag-quote__quoted-time" datetime="2009-11-20T08:43:38+00:00">20.11.09, 08:43</time></span><div class='quote '>Можно ли с Вами побеседовать?<br>
<br>
Я, как то раз, в три часа ночи решил перейти на Indy 10? для того что бы отправлять письма через gmail.com ...<br>
Лучше бы пошел спать&#33;<br>
<br>
У меня история такая: С темой у меня пока не получается еще - ...<br>
<br>
Но даже пока еще не поменял в исходниках:<br>
<br>
LANG_RUSSIAN: Result := idcsWINDOWS_1251;<br>
<br>
устанавливая CharSet := &#39;windows-1251&#39;;<br>
<br>
я отправлял письма на русском языке, потом просматривал в браузере - дошло по русски,<br>
затем в том же Thunderbird-e получаю - все в порядке.<br>
<br>
А на Indy 10-ом, хоть выспись - чего только не предпринимал.<br>
<br>
Причем, меняя CharSet при отправке  - в браузере я вижу, что кодировка самого тела меняется, <br>
и я могу переключаться там и видеть, что совпадает с тем, что я отправил.<br>
<br>
Но получить с помощью Indy 10 не получается.<br>
<br>
Именно с такой ситуацией, Вы сталкивались?<br>
<br>
Буду очень благодарен, если поддержите беседу, хотя бы парой писем.</div></div><br>
Ну не знаю, тут все индивидуально...<br>
Какая версия Delphi и Indy?<br>
<br>
У меня к примеру Delphi 6.0 EE + Indy 10.1.5 и уменя прекрасно работает вот этот пример.<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">procedure TForm1.Button1Click(Sender: TObject);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;SL: TStringList;</div><div class="code_line">&nbsp;&nbsp;id_ris: string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;SL := TStringList.Create;</div><div class="code_line">&nbsp;&nbsp;id_ris := &#39;ris_&#39;+IntToHex(Random(MaxInt), 4) + IntToHex(Random(MaxInt), 4); // генерим идентификатор</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;SL.Add(&#39;&#60;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&#62;&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SL.Add(&#39;&#60;html&#62;&#60;head&#62;&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SL.Add(&#39;&#60;title&#62;Заголовок&#60;/title&#62;&#39;); //в принципи не нужен</div><div class="code_line">&nbsp;&nbsp; &nbsp;SL.Add(&#39;&#60;/head&#62;&#60;body&#62;&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SL.Add(&#39;&#60;div&#62;Текст&#60;/div&#62;&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SL.Add(&#39;&#60;img src=&quot;cid:&#39; + id_ris + &#39;&quot;&#62;&#39;);// вот тут используем</div><div class="code_line">&nbsp;&nbsp; &nbsp;SL.Add(&#39;&#60;/body&#62;&#60;/html&#62;&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;with TIdText.Create(IdMessage1.MessageParts, SL) do // загружаем тело письма</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ContentType := &#39;text/html&#39;; // выставляем тип контента</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;CharSet := &#39;windows-1251&#39;; // выставляем тип кодировки</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;with TIdAttachmentFile.Create(IdMessage1.MessageParts, &#39;C:\Копия Тестовое вложение Access.PNG&#39;) do</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ContentID := id_ris; // присваеваем идентификатор</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdMessage1.Subject := &#39;Тестовое письмо&#39;; // Тема письма</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdMessage1.Recipients.EMailAddresses := &#39;user@mail.ru&#39;; // Кому</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdMessage1.From.Name := &#39;Президент России&#39;; // От кого</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdMessage1.From.Address:=&#39;president@mail.ru&#39;; // EMail-От кого</div><div class="code_line">&nbsp;&nbsp; &nbsp;//*****************************************************</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdSMTP1.MailAgent := &#39;Microsoft Outlook Express 6.00.2900.2180&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdSMTP1.Host := &#39;smtp.server.ru&#39;; // Сервер SMTP</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdSMTP1.Port := 25; // Порт сервера</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdSMTP1.AuthType := satNone; // Тип аутенфикации \ без запроса логина и пароля</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdSMTP1.Connect;</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdSMTP1.Send(IdMessage1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;IdSMTP1.Disconnect;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;SL.free;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Но при условии что мы изменили функцию <strong class='tag-b'>IdGetDefaultCharSet </strong>в модуле <strong class='tag-b'>IdGlobalProtocols.PAS</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">function IdGetDefaultCharSet: TIdCharSet;</div><div class="code_line">{$IFDEF USEINLINE}inline;{$ENDIF}</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;{$IFDEF UNIX}</div><div class="code_line">&nbsp;&nbsp;Result := GIdDefaultCharSet;</div><div class="code_line">&nbsp;&nbsp;{$ENDIF}</div><div class="code_line">&nbsp;&nbsp;{$IFDEF DOTNET}</div><div class="code_line">&nbsp;&nbsp;Result := idcsUNICODE_1_1;</div><div class="code_line">&nbsp;&nbsp;// not a particular Unicode encoding - just unicode in general</div><div class="code_line">&nbsp;&nbsp;// i.e. DotNet native string is 2 byte Unicode, we do not concern ourselves</div><div class="code_line">&nbsp;&nbsp;// with Byte order. (though we have to concern ourselves once we start</div><div class="code_line">&nbsp;&nbsp;// writing to some stream or Bytes</div><div class="code_line">&nbsp;&nbsp;{$ENDIF}</div><div class="code_line">&nbsp;&nbsp;{$IFDEF WIN32_OR_WIN64_OR_WINCE}</div><div class="code_line">&nbsp;&nbsp;// Many defaults are set here when the choice is ambiguous. However for</div><div class="code_line">&nbsp;&nbsp;// IdMessage OnInitializeISO can be used by user to choose other.</div><div class="code_line">&nbsp;&nbsp;case SysLocale.PriLangID of</div><div class="code_line">&nbsp;&nbsp; &nbsp;LANG_CHINESE: begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if SysLocale.SubLangID = SUBLANG_CHINESE_SIMPLIFIED then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result := idcsGB2312;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end else begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result := idcsBig5;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;LANG_JAPANESE: Result := idcsISO_2022_JP;</div><div class="code_line">&nbsp;&nbsp; &nbsp;LANG_KOREAN: Result := idcscsEUCKR;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Kudzu</div><div class="code_line">&nbsp;&nbsp; &nbsp;// 1251 is the Windows standard for Russian but its not used in emails.</div><div class="code_line">&nbsp;&nbsp; &nbsp;// KOI8-R is by far the most widely used and thus the default.</div><div class="code_line">(* Изменения начинаются тут *)</div><div class="code_line">// &nbsp; &nbsp;LANG_RUSSIAN: Result := idcsKOI8_R; //Rem by User32!!!</div><div class="code_line">&nbsp;&nbsp; &nbsp;LANG_RUSSIAN: Result := idcsWINDOWS_1251; //Add by User32!!!</div><div class="code_line">(* И заканчиваются тут *)</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Kudzu</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Ukranian is about 50/50 KOI8u and 1251, but 1251 is the newer one and</div><div class="code_line">&nbsp;&nbsp; &nbsp;// the Windows one so we default to it.</div><div class="code_line">&nbsp;&nbsp; &nbsp;LANG_UKRAINIAN: Result := idcswindows_1251;</div><div class="code_line">&nbsp;&nbsp; &nbsp;else begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result := idcsISO_8859_1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;{$ENDIF}</div><div class="code_line">end;</div></ol></div></div></div></div> <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;'>Добавлено <time class="tag-mergetime" datetime="2010-06-29T18:58:43+04:00">29.06.10, 14:58</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=280923&view=findpost&p=2547645'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>X11 &#064; <time class="tag-quote__quoted-time" datetime="2010-03-25T21:01:56+00:00">25.03.10, 21:01</time></span><div class='quote '>У меня проблема другая.<br>
Отправляю письмо хоть в юникоде, хоть в виндовой кодировке.<br>
1. В теме указываю: <em class='tag-i'>Рассылка новых объектов</em><br>
В письме приходит в ящик: <em class='tag-i'>новых объектов</em><br>
<br>
2. Прикрепляю экселевский файл с русскоязычным названием. В ящик приходит с прикрплённым письмом, но имя <em class='tag-i'>Part1.2</em> или <em class='tag-i'>noname</em><br>
<br>
D2007. Indy 10.5.7 (r4154 2010-03-25).</div></div><br>
Я сейчас не работаю в Delphi 2007 - 2010, но вот эта статейка думаю может вам помочь.<br>
<br>
http://denov.ru/?tag=tidattachmentfile]]></description>
        <author>User32</author>
        <category>Интернет, сети, протоколы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=280923&amp;view=findpost&amp;p=2547645</guid>
        <pubDate>Thu, 25 Mar 2010 21:01:56 +0000</pubDate>
        <title>при отправке письма используя Indy 10, получаются &amp;quot;крякозябры&amp;quot; в теме</title>
        <link>https://forum.sources.ru/index.php?showtopic=280923&amp;view=findpost&amp;p=2547645</link>
        <description><![CDATA[X11: У меня проблема другая.<br>
Отправляю письмо хоть в юникоде, хоть в виндовой кодировке.<br>
1. В теме указываю: <em class='tag-i'>Рассылка новых объектов</em><br>
В письме приходит в ящик: <em class='tag-i'>новых объектов</em><br>
<br>
2. Прикрепляю экселевский файл с русскоязычным названием. В ящик приходит с прикрплённым письмом, но имя <em class='tag-i'>Part1.2</em> или <em class='tag-i'>noname</em><br>
<br>
D2007. Indy 10.5.7 (r4154 2010-03-25). <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;'>Добавлено <time class="tag-mergetime" datetime="2010-03-25T21:03:24+00:00">25.03.10, 21:03</time></span></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">procedure TfmEmail.SendMail(aRecordIndex:integer);</div><div class="code_line">Var</div><div class="code_line">&nbsp;q: TpFibQuery;</div><div class="code_line">&nbsp;IdEMailAddressList2, IdEMailAddressListCopy: TIdEMailAddressList;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;sCharSet := dbgmail.DataController.Values[aRecordIndex, dbgMailCHARSET.Index];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;if dbgmail.DataController.Values[aRecordIndex, dbgMailLOCKED.Index] then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Log(&#39;Отправка рассылки:&#39; + dbgmail.DataController.Values[aRecordIndex, dbgMailname.Index]);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.DisConnect;</div><div class="code_line">&nbsp;&nbsp;IdMessage1.Clear;</div><div class="code_line">&nbsp;&nbsp;IdMessage1.From.Name &nbsp; &nbsp;:= &#39;&#39;;</div><div class="code_line">&nbsp;&nbsp;SysLocale.PriLangID &nbsp; &nbsp; := LANG_SYSTEM_DEFAULT;// LANG_RUSSIAN;// LANG_UKRAINIAN;</div><div class="code_line">&nbsp;&nbsp;IdMessage1.CharSet &nbsp; &nbsp; &nbsp;:= sCharSet;</div><div class="code_line">&nbsp;&nbsp;IdMessage1.ContentType &nbsp;:= &#39;multipart/related; type=&quot;multipart/alternative&quot;&#39;;</div><div class="code_line">// &nbsp;IdMessage1.ContentTransferEncoding := &#39;bit7&#39;;</div><div class="code_line">&nbsp;&nbsp;IdMessage1.ContentTransferEncoding := &#39;8bit&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.ConnectTimeout &nbsp;:= 60*100;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IdMessage1.From.Address := dbgmail.DataController.Values[aRecordIndex, dbgMailE_MAIL.Index];</div><div class="code_line">&nbsp;&nbsp;//от кого</div><div class="code_line">&nbsp;&nbsp;case ansiindextext(sCharSet, [&#39;UTF-8&#39;, &#39;windows-1251&#39;]) of</div><div class="code_line">// &nbsp; &nbsp;0: IdMessage1.From.Name &nbsp; &nbsp;:= AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailFROM_NAME.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;0: IdMessage1.From.Name &nbsp; &nbsp;:= dbgmail.DataController.Values[aRecordIndex, dbgMailFROM_NAME.Index];</div><div class="code_line">&nbsp;&nbsp; &nbsp;1: IdMessage1.From.Name &nbsp; &nbsp;:= dbgmail.DataController.Values[aRecordIndex, dbgMailFROM_NAME.Index];</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;//кому</div><div class="code_line">&nbsp;&nbsp;IdEMailAddressList2 := TIdEMailAddressList.Create(IdMessage1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;//получатели</div><div class="code_line">&nbsp;&nbsp;case ansiindextext(sCharSet, [&#39;UTF-8&#39;, &#39;windows-1251&#39;]) of</div><div class="code_line">// &nbsp; &nbsp;0: IdEMailAddressList2.EMailAddresses := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;0: IdEMailAddressList2.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT.Index];</div><div class="code_line">&nbsp;&nbsp; &nbsp;1: IdEMailAddressList2.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT.Index];</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IdMessage1.Recipients.EMailAddresses := EncodeAddress(IdEMailAddressList2, &#39;B&#39;, &nbsp;sCharSet);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;//копия</div><div class="code_line">&nbsp;&nbsp;if dbgMail.DataController.Values[aRecordIndex, dbgMailRECIPIENT_COPY.Index] &#60;&#62; null then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;IdEMailAddressListCopy := TIdEMailAddressList.Create(IdMessage1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//получатели</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case ansiindextext(sCharSet, [&#39;UTF-8&#39;, &#39;windows-1251&#39;]) of</div><div class="code_line">// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0: IdEMailAddressListCopy.EMailAddresses := AnsiToUtf8(dbgMail.DataController.Values[aRecordIndex, dbgMailRECIPIENT_COPY.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0: IdEMailAddressListCopy.EMailAddresses := dbgMail.DataController.Values[aRecordIndex, dbgMailRECIPIENT_COPY.Index];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1: IdEMailAddressListCopy.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT_COPY.Index];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;IdMessage1.CCList.EMailAddresses := EncodeAddress(IdEMailAddressListCopy, &#39;B&#39;, &nbsp;sCharSet);</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;//от кого</div><div class="code_line">&nbsp;&nbsp;case ansiindextext(sCharSet, [&#39;UTF-8&#39;, &#39;windows-1251&#39;]) of</div><div class="code_line">// &nbsp; &nbsp;0: IdMessage1.ReplyTo.EMailAddresses := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_FROM.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;0: IdMessage1.ReplyTo.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_FROM.Index];</div><div class="code_line">&nbsp;&nbsp; &nbsp;1: IdMessage1.ReplyTo.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_FROM.Index];</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;//тема</div><div class="code_line">&nbsp;&nbsp;case ansiindextext(sCharSet, [&#39;UTF-8&#39;, &#39;windows-1251&#39;]) of</div><div class="code_line">// &nbsp; &nbsp;0: IdMessage1.Subject &nbsp; &nbsp;:= AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailSUBJECT.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;0: IdMessage1.Subject &nbsp; &nbsp;:= dbgmail.DataController.Values[aRecordIndex, dbgMailSUBJECT.Index];</div><div class="code_line">&nbsp;&nbsp; &nbsp;1: IdMessage1.Subject &nbsp; &nbsp;:= dbgmail.DataController.Values[aRecordIndex, dbgMailSUBJECT.Index];</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;with TIdText.Create(IdMessage1.MessageParts, nil) do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;CharSet := sCharSet;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case ansiindextext(sCharSet, [&#39;UTF-8&#39;, &#39;windows-1251&#39;]) of</div><div class="code_line">// &nbsp; &nbsp; &nbsp; &nbsp;0: Body.Add(AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailTITLE.Index]));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;0: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailTITLE.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;1: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailTITLE.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case ansiindextext(sCharSet, [&#39;UTF-8&#39;, &#39;windows-1251&#39;]) of</div><div class="code_line">// &nbsp; &nbsp; &nbsp; &nbsp;0: Body.Add(AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailbody.Index]));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;0: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailbody.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;1: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailbody.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case ansiindextext(sCharSet, [&#39;UTF-8&#39;, &#39;windows-1251&#39;]) of</div><div class="code_line">// &nbsp; &nbsp; &nbsp; &nbsp;0: Body.Add(AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailFOOTER.Index]));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;0: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailFOOTER.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;1: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailFOOTER.Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ContentType := &#39;text/plain&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IdMessage1.IsEncoded &nbsp;:= true;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.Host &nbsp; &nbsp; &nbsp;:= dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP.Index];</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.Username &nbsp;:= dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_USER.Index];</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.Password &nbsp;:= Decrypt(dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_PASSWORD.Index], k_sm);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;case ansiindextext(dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_TYPE_CRYPT.Index], [&#39;нет&#39;, &#39;неявное&#39;, &#39;явное&#39;, &#39;принудительное&#39;]) of</div><div class="code_line">&nbsp;&nbsp; &nbsp;0: IdSMTP1.UseTLS &nbsp; &nbsp;:= utNoTLSSupport;</div><div class="code_line">&nbsp;&nbsp; &nbsp;1: IdSMTP1.UseTLS &nbsp; &nbsp;:= utUseImplicitTLS;</div><div class="code_line">&nbsp;&nbsp; &nbsp;2: IdSMTP1.UseTLS &nbsp; &nbsp;:= utUseExplicitTLS;</div><div class="code_line">&nbsp;&nbsp; &nbsp;3: IdSMTP1.UseTLS &nbsp; &nbsp;:= utUseRequireTLS;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.Port &nbsp; &nbsp; &nbsp;:= dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_PORT.Index];</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.AuthType &nbsp;:= satDefault;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IdSSLIOHandlerSocketOpenSSL1.Destination &nbsp;:= IdSMTP1.Host + &#39;:&#39; + IntToStr(IdSMTP1.Port);</div><div class="code_line">&nbsp;&nbsp;IdSSLIOHandlerSocketOpenSSL1.Host &nbsp; &nbsp; &nbsp; &nbsp; := IdSMTP1.Host;</div><div class="code_line">&nbsp;&nbsp;IdSSLIOHandlerSocketOpenSSL1.MaxLineAction:= maException;</div><div class="code_line">&nbsp;&nbsp;IdSSLIOHandlerSocketOpenSSL1.Port &nbsp; &nbsp; &nbsp; &nbsp; := IdSMTP1.Port;</div><div class="code_line">&nbsp;&nbsp;IdSSLIOHandlerSocketOpenSSL1.DefaultPort &nbsp;:= 0;</div><div class="code_line">&nbsp;&nbsp;IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode &nbsp; &nbsp; &nbsp; &nbsp;:= sslmUnassigned;</div><div class="code_line">&nbsp;&nbsp;IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode &nbsp;:= [];</div><div class="code_line">&nbsp;&nbsp;IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;q := TpFibQuery.Create(nil);</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;q.Database := DM.fibDB;</div><div class="code_line">&nbsp;&nbsp; &nbsp;q.Transaction := trMailRead;</div><div class="code_line">&nbsp;&nbsp; &nbsp;q.SQL.Text &nbsp; &nbsp;:= &#39;SELECT NAME FROM MAIL_ATTACHMENTS where ID_MAIL = :m_ID&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;q.ParamByName(&#39;m_ID&#39;).AsInteger := dbgmail.DataController.Values[aRecordIndex, dbgMailID.Index];</div><div class="code_line">&nbsp;&nbsp; &nbsp;q.ExecQuery;</div><div class="code_line">&nbsp;&nbsp; &nbsp;q.GoToFirstRecordOnExecute := true;</div><div class="code_line">&nbsp;&nbsp; &nbsp;while not q.Eof do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if FileExists(q.FieldByName(&#39;name&#39;).AsString) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;with TIdAttachmentFile.Create(IdMessage1.MessageParts, q.FieldByName(&#39;name&#39;).AsString) do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case AnsiIndexText(ExtractFileExt(AnsiUpperCase(q.FieldByName(&#39;name&#39;).AsString)), [&#39;.XLS&#39;, &#39;.XLSX&#39;, &#39;.RAR&#39;, &#39;.ZIP&#39;, &#39;.DOC&#39;, &#39;.DOCX&#39;, &#39;.HTML&#39;, &#39;.TXT&#39;]) of</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0: ContentType := &#39;application/vnd.ms-excel&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1: ContentType := &#39;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2: ContentType := &#39;application/x-rar-compres&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3: ContentType := &#39;application/zip&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4: ContentType := &#39;application/msword&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5: ContentType := &#39;application/vnd.openxmlformats-officedocument.wordprocessingml.document&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;6: begin ContentType := &#39;text/html; charset=WINDOWS-1251&#39;; {ContentDisposition := &#39;inline&#39;} end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7: begin ContentType := &#39;text/plain; charset=WINDOWS-1251&#39;; {ContentDisposition := &#39;inline&#39;} end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ContentType := &#39;application/octet-stream&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//FileName &nbsp; &nbsp;:= AnsiToUtf8(q.FieldByName(&#39;name&#39;).AsString);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FileName &nbsp; &nbsp;:= q.FieldByName(&#39;name&#39;).AsString;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;q.next;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;//if FileExists(q.FieldByName(&#39;name&#39;).AsString) then</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;q.close;</div><div class="code_line">&nbsp;&nbsp; &nbsp;FreeAndNil(q);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Log(&#39;Подключение к: &#39; + IdSMTP1.Host + &#39;:&#39;+IntToStr(IdSMTP1.Port));</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.Connect;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;dxStatusBar1.Panels[1].Text := &#39;Отправка: &#39; + dbgmail.DataController.Values[aRecordIndex, dbgMailName.Index];</div><div class="code_line">&nbsp;&nbsp;Application.ProcessMessages;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Log(&#39;Отправка.....&#39;);</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.Send(IdMessage1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Log(&#39;Рассылка отправлена&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Log(&#39;Отключение от сервера...&#39;);</div><div class="code_line">&nbsp;&nbsp;IdSMTP1.DisConnect;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;tMail.Edit;</div><div class="code_line">&nbsp;&nbsp;tMail.FBN(&#39;LAST_DATE&#39;).AsDateTime := now;</div><div class="code_line">&nbsp;&nbsp;tMail.FBN(&#39;SEND_COUNT&#39;).AsInteger := tMail.FBN(&#39;SEND_COUNT&#39;).AsInteger + 1;</div><div class="code_line">&nbsp;&nbsp;tMail.post;</div><div class="code_line">&nbsp;&nbsp;tMail.refresh;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;FreeAndNil(IdEMailAddressList2);</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>X11</author>
        <category>Интернет, сети, протоколы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=280923&amp;view=findpost&amp;p=2426572</guid>
        <pubDate>Fri, 20 Nov 2009 08:43:38 +0000</pubDate>
        <title>при отправке письма используя Indy 10, получаются &amp;quot;крякозябры&amp;quot; в теме</title>
        <link>https://forum.sources.ru/index.php?showtopic=280923&amp;view=findpost&amp;p=2426572</link>
        <description><![CDATA[mvdmvd: Можно ли с Вами побеседовать?<br><br>Я, как то раз, в три часа ночи решил перейти на Indy 10? для того что бы отправлять письма через gmail.com ...<br>Лучше бы пошел спать&#33;<br><br>У меня история такая: С темой у меня пока не получается еще - ...<br><br>Но даже пока еще не поменял в исходниках:<br><br>LANG_RUSSIAN: Result := idcsWINDOWS_1251;<br><br>устанавливая CharSet := &#39;windows-1251&#39;;<br><br>я отправлял письма на русском языке, потом просматривал в браузере - дошло по русски,<br>затем в том же Thunderbird-e получаю - все в порядке.<br><br>А на Indy 10-ом, хоть выспись - чего только не предпринимал.<br><br>Причем, меняя CharSet при отправке  - в браузере я вижу, что кодировка самого тела меняется, <br>и я могу переключаться там и видеть, что совпадает с тем, что я отправил.<br><br>Но получить с помощью Indy 10 не получается.<br><br>Именно с такой ситуацией, Вы сталкивались?<br><br>Буду очень благодарен, если поддержите беседу, хотя бы парой писем.]]></description>
        <author>mvdmvd</author>
        <category>Интернет, сети, протоколы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=280923&amp;view=findpost&amp;p=2355152</guid>
        <pubDate>Wed, 02 Sep 2009 11:19:41 +0000</pubDate>
        <title>при отправке письма используя Indy 10, получаются &amp;quot;крякозябры&amp;quot; в теме</title>
        <link>https://forum.sources.ru/index.php?showtopic=280923&amp;view=findpost&amp;p=2355152</link>
        <description><![CDATA[User32: Многие кто когда либо отправлял или создавал письма используя Indy 10, получал совсем не читабельный вид темы письма<br>
Как не странно, но разработчики решили, что в России для писем используют в основном KOI8R кодировку а не WINDOWS-1251.<br>
Отсюда и такие &quot;крякозябры&quot; в теме письма.<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">...</div><div class="code_line">IdMessage1.CharSet := &#39;windows-1251&#39;; //но это пока мы не исправим исходники роли не играет.</div><div class="code_line">...</div><div class="code_line">IdMessage1.Subject := &#39;Тема письма&#39;;</div><div class="code_line">...</div></ol></div></div></div></div><br>
<br>
Для исправления этого потребуется правка исходников Indy.<br>
В модуле IdGlobalProtocols.pas находим функцию IdGetDefaultCharSet и меняем строку<br>
<strong class='tag-b'>LANG_RUSSIAN: Result := idcsKOI8_R;</strong><br>
на<br>
<strong class='tag-b'>LANG_RUSSIAN: Result := idcsWINDOWS_1251;</strong><br>
Ну и разумеется перекомпилируем.<br>
<br>
Мне помогло, надеюсь поможет и вам  ;)]]></description>
        <author>User32</author>
        <category>Интернет, сети, протоколы</category>
      </item>
	
      </channel>
      </rss>
	