Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка при получении почты, неудается получить заголовок письма 
:(
    Опции темы
redline85
Дата 9.1.2011, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.1.2011

Репутация: нет
Всего: нет



Доброго времени суток, господа форумчане! 
Возникла такая  задача, необходимо отправить на почту письма с вложение,то есть даже не  просто на почтовик, а через него.  два одинаковых приложения крутятся между пользователями, единственная связь м\у ними через почтовик, но ограничение на аттач примерно 7мб.отправку делаю стандартными компонентами делфи NMSMTP1, IdMessage  используя перекодировку wintokoi(код нашел  в инете,c  ней хотяб почтовик коректно получает...). при получении письма почтовым клиентом, с кодировкой все норм и с аттачем. но при попытке получить  почту своей же программой  через компонент IdPOP31 вылетает ошибка 
Цитата
(Project Projectl.exe raised exception class EConvertError with message 'Invalid argument to date encode1. Process stopped. Use Step or Run to continue.)

пробовал использовать сторонний компонент SakSMTP1 отправленное им письмо приходит без проблем, НО, в этом компоненте нельзя динамически сменить  имя аттача. так что пришлось от него отказаться.
Хочу уточнить, что программа получает только те письма, которые ей же посланы, это определяется по теме письма, и вот тут то и вылетает ошибка...
На получение почты
Код

procedure TForm1.XiButton7Click(Sender: TObject);
var i:integer;
from:string;
begin

 
    idPOP31.UserId:=(edit3.Text); // Логин пользователя
    idPOP31.Password:=(edit4.Text); // пароль пользователя
   IdMessage1.Clear; // очистка буфера для сообщения

try
  idPOP31.Connect;
   
    if IdPOP31.CheckMessages<>0 then
        begin
        Memo2.Clear;

 if IdPOP31.RetrieveHeader ( 1,IdMessage1)=true then//-----------вот тут и вылетает ошибка
     begin

    memo1.Lines.AddStrings(IdMessage1.Body);
        if  pos('111',KoiToWin (IdMessage1.Subject))<>0    then
     begin
     from:= decod(IdMessage1.From.text);
    label11.Caption:=trim(copy(from,1,pos('<',from)-1));
        IdPOP31.Retrieve(1,IdMessage1) ;// получение одного сообщения
///////////////////////////////////////////////////////////
    for i:=0 to IdMessage1.MessageParts.Count-1 do
        with IdMessage1.MessageParts do
        begin
          if items[i].ClassType=TIdAttachment then
            with TIdAttachment(items[i]) do
              try
                Form1.Memo2.Lines.Add('--> Attach: '+FileName);
                If not DirectoryExists((ExtractFilePath(paramstr(0))+'incomming\'+ label11.Caption)) then

 CreateDir((ExtractFilePath(paramstr(0))+'incomming\'+ label11.Caption)) ;

              //  if FileExists(FileName) then DeleteFile(FileName);
              ShowMessage('incomming\'+ label11.Caption+'\'+FileName);
                 SaveToFile     ((ExtractFilePath(paramstr(0))+'incomming\'+ label11.Caption+'\')+FileName);
           //     SaveToFile((ExtractFilePath(paramstr(0))+'incomming\'+ FileName);
              except
                ShowMessage('Не удается сохранить файл');
              end;
          if items[i].ClassType = TIdText then
            with TIdText(items[i]) do
            begin
              Form1.Memo2.Lines.Add('--> Text: ');
            Form1.Memo2.Lines.AddStrings(Body);
             Form1.Memo2.Lines.text:=(Body.Text);
               // Form1.Memo2.Lines.Add(wintokoi(body.Text));
            end;
        end;
//////////////////////////////////////////////////////////
  //decod(IdMessage1.Headers.Text);
    // Memo2.Lines.AddStrings(IdMessage1.MessageParts.Items.);
     // передача сообщения из компонента IdMessage в memo
idPOP31.Delete(1); // удаление с сервера, полученного сообщения
   end;
   end
   else
    ShowMessage('no new message');
   end ;
finally
  idPOP31.Disconnect; // разрыв связи
 //     ShowMessage('disssssssconnect');
    end;


end;


Отправка почты
Код

procedure TForm1.XiButton1Click(Sender: TObject);

var sr: TSearchRec;
i,j:integer;
      begin

      XiPanel2.Visible:=true;
      i:=0;
      j:=0;
         label3.Caption:=inttostr(i+1);
      label5.Caption:=inttostr(j+1);
          label9.Caption:=label1.Caption;
      label10.Caption:=inttostr( memo1.Lines.Count);
      XiProgressBar1.Max:=strtoint(label1.Caption)*memo1.Lines.Count;
      XiProgressBar1.Position:=0;
          for j:=0 to memo1.Lines.Count-1 do
          begin
          for i:=0 to strtoint(label1.Caption)-1 do

                                                begin
with NMSMTP1 do
  begin

    Host := '192.168.1.2';
        label3.Caption:=inttostr(i+1);
      label5.Caption:=inttostr(j+1);
    Connect;
          PostMessage.Date:=wintokoi(FormatDateTime('dddddd',now));
         PostMessage.Attachments.Add(wintokoi(sfile.Strings[i]));///////-----тут храниться список файлов для отправки
    PostMessage.FromAddress :=wintokoi(edit1.Text);
    PostMessage.ToAddress.Text := wintokoi(memo1.Lines.Strings[j]);
  NMSMTP1.Charset:='KOI8-R';
    PostMessage.Body.Text := wintokoi(memo2.Text);
    PostMessage.Subject := wintokoi('111 '+ inttostr(i+1));

    try
    SendMail;
          XiProgressBar1.Position:= XiProgressBar1.Position+1;
 NMSMTP1.Disconnect;

 DeleteFile(sfile.Strings[i]);

                                         except
     ShowMessage('Ошибка отправки, почтовый сервак работает?');
     
     end;
        end;
        end;
end;
  
      XiButton5.Enabled:=true;
      label2.Caption:='Файлы отправленны';
      label2.Font.Color:=clBlue;
end;

=========
немогу понять, какое поле еще надо перекодировать??? или это надо сделать при отправке?
PM MAIL   Вверх
Akella
Дата 9.1.2011, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Цитата
ошибка при получении почты



Цитата(redline85 @  9.1.2011,  12:18 Найти цитируемый пост)
необходимо отправить на почту письма с вложение




ты уж определись, т.к. название темы должно отражать её суть!!!
PM MAIL   Вверх
redline85
Дата 10.1.2011, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.1.2011

Репутация: нет
Всего: нет



IdSMTP1  мне помог. вопрос закрыт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0790 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.