Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3 / 3 сообщений из 3, страница 1 из 1
14.08.2003, 09:50
    #32236133
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3
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
14.08.2003, 09:51
    #32236134
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3
Отправка почты 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
14.08.2003, 09:55
    #32236141
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3
Получение почты 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
Форумы / C++ [игнор отключен] [закрыт для гостей] / NMSMTP, NMPOP3 и XML, XML UTF-8, Binary, Indy IdSMTP, Indy IdPOP3 / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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