powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3
3 сообщений из 3, страница 1 из 1
NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3
    #32236133
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C++Builder 6

При считывании вложенных файлов компонентой NMPOP3 происходит модификация содержимого файлов XML и XML UTF-8 и Binary.
Но файлы Binary затем считываются без ошибок, а XML и XML UTF-8 уже невозможно прочитать стандартными средствами.

The Bat считывает нормально, модификаций нет.
В C++Builder 5 таких модификаций тоже не происходило.

Как с этим бороться в C++Builder 6?

Вчера я задал этот вопрос в форуме "Программирование", а надо было здесь.
По поиску в предыдущих периодах этого форума ничего не нашёл.

Но в течение дня разобрался сам. Эта проблема не только у меня на Builder 6, но и у других, а также и на Delphi 6. В форуме Delphi сказано, что это ошибка разработчиков и следует перейти на другие компоненты. Также приведён пример c Indy POP3 - TIdPOP3. Линейка компонентов Indy появилась в Builder 6 и Delphi 6. Вот эти компоненты работают корректно есть примеры на Delphi, но не так-то просто понять как с ними работать в С++ - не нашёл ни одного примера.

Если кому интересно привожу своё решение проблемы и свой алгоритм.
...
Рейтинг: 0 / 0
NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3
    #32236134
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отправка почты TIdSMTP

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
 TIdMessage *IdMsg;
 IdMsg = NULL;

  IdMsg = new TIdMessage(this);
  IdMsg->CharSet =  "Windows-1251 ";
  IdMsg->Subject =  "Subj" ;
  IdMsg->From->Name =  "Иван Иваныч" ; 
  IdMsg->From->Address =  "Ivan@mail.nnov.ru" ; // Например
  IdMsg->Sender->Name =  "Иван Иваныч" ;
  IdMsg->Sender->Address =  "Ivan@mail.nnov.ru" ;
  IdMsg->UseNowForDate = true;
  IdMsg->Recipients->Add();
  IdMsg->Recipients->Items[ 0 ]->Address =  "Klava@mail.nnov.ru" ;

// Текст можно так
  IdMsg->Body->Add( "Текст письма" );
// Можно вот так, но два раза (не знаю почему, разбираться не стал)
  TIdText(IdMsg->MessageParts, Memo1->Lines); //  1 
  TIdText(IdMsg->MessageParts, Memo1->Lines); //  2 

// Вложение файлов
  TIdAttachment(IdMsg->MessageParts,  "Ivan1.xml" );
  TIdAttachment(IdMsg->MessageParts,  "Ivan2.xml" );

  if(IdSMTP1->Connected()) IdSMTP1->Disconnect();
  IdSMTP1->Host =  "smtp.nnov.ru" ; // Например.
  IdSMTP1->UserId =  "login" ;
  IdSMTP1->Port =  25 ;
  IdSMTP1->Connect();
  IdSMTP1->Send(IdMsg); // Отправка
  if(IdSMTP1->Connected()) IdSMTP1->Disconnect();
 
 if(IdMsg != NULL) delete IdMsg;
...
Рейтинг: 0 / 0
NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3
    #32236141
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получение почты TIdPOP3

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
 int i, MailCount =  0 , p, PartCount;
 AnsiString Subj, FileExt, FileName;
 TIdMessage *IdMsg;
 TIdAttachment *IdAttach;
 TIdText *IdText;

 IdMsg = NULL;
 if(IdPOP31->Connected()) IdPOP31->Disconnect();
 IdPOP31->Host =  "pop.nnov.ru" ; // Например
 IdPOP31->UserId =  "login" ;
 IdPOP31->Password =  "password" ;
 IdPOP31->Port =  110 ;
 IdPOP31->Connect();
 MailCount = IdPOP31->CheckMessages();

 Memo1->Lines->Clear(); 

 if(MailCount >  0 ){ //  1 
  for(i =  1 ; i <= MailCount; i++){ //  2 
    if(IdMsg != NULL) delete IdMsg;
    IdMsg = new TIdMessage(this);

    if(IdPOP31->Retrieve(i, IdMsg)){ //  3 
    Subj = IdMsg->Subject.UpperCase();
    if(Subj.Pos( "SUBJ" ) >  0 ){ //  4 
    PartCount = IdMsg->MessageParts->Count;
    for(p =  0 ; p < PartCount; p++){  //  5 

     if(IdMsg->MessageParts->Items[p]->ClassNameIs( "TIdAttachment" )){ //  6 
      IdAttach = (TIdAttachment*) IdMsg->MessageParts->Items[p];

      FileName = IdAttach->FileName;
      if(FileExists(FileName)) DeleteFile(FileName);
      IdAttach->SaveToFile(FileName);

        FileExt = ExtractFileExt(FileName).LowerCase();
      if((FileExt ==  ".cds"  || FileExt ==  ".xml" ) && FileExists(FileName)){ //  7 
         cdsReport->Close();
         cdsReport->LoadFromFile(FileName);
         ProcessReport(); // Своя функция закачки данных из файла отчёта в БД SQL
        } //  7 
     } else { if(IdMsg->MessageParts->Items[p]->ClassNameIs( "TIdText" )){ //  8 
                  Memo1->Lines->AddStrings(TIdText(IdMsg->MessageParts->Items[p])->Body); 
          } //  8 
        } //  6 
      } //  5 
    } //  4 
   IdPOP31->Delete(i);
   } //  3 
  } //  2 
 } //  1 
 if(IdPOP31->Connected()) IdPOP31->Disconnect();
 if(IdMsg != NULL) delete IdMsg;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]