Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2011, 22:22   #1
Стелс
Я с вами :-)
Форумчанин
 
Аватар для Стелс
 
Регистрация: 19.10.2008
Сообщений: 110
По умолчанию Работа с почтой & проверка подключения

Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, IdBaseComponent, IdComponent, IdTCPServer,
  IdCustomHTTPServer, IdHTTPServer, IdTCPConnection, IdTCPClient, IdHTTP,
  IdMessageClient, IdSMTP, IdMessage;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Timer2: TTimer;
    IdHTTP1: TIdHTTP;
    IdMessage1: TIdMessage;
    IdSMTP: TIdSMTP;
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  http:TidHTTP;
  Form1: TForm1;
  cnt:boolean=false;//Поможет при проверке подключения
  IP:string;//Здесь то мы его и будем хранить

implementation

{$R *.dfm}
//Функция выполняет двойную функцию)) определяет подключен ли и IP адресс
function GetIP: string;
begin
 Result:='';
 http:=TidHTTP.Create(nil);
    try
      ip := http.Get('http://ddns.cis.by/nic/');//Адрес сайта для определения внешнего IP
      Result := IP;//Это будет текст письма
      http.Free;
    except
      FreeAndNil(http);//Пригодится
     end;
       END;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 GetIP;
if (http = nil)//Пригодилось )-Если nill  то не подключен
  then
       cnt:=False//Переменная проверки состояния подключения
        else
           cnt:=true;
if (Timer2.Enabled = false )and
                 (cnt=False)
    then
        Timer2.Enabled := True;//то можно и отправить 

      END;

procedure TForm1.Timer2Timer(Sender: TObject);
var
M: TIdMessage;
i_p,subI_p:string;
i:integer;
begin 
if cnt= false then exit//В зависимости от состояния подключения принимаем решение
 else begin
try
//Откуда отправить
 IdSMTP.Port:=25;
 IdSMTP.Host := 'mail.rambler.ru';
 IdSMTP.AuthenticationType:=atlogin;
 IdSMTP.Username:='user@rambler.ru';
 IdSMTP.Password := '*********';
 IdSMTP.Connect(1000);
 i_p:=copy(IP,77,30);     //Режем наш IP до-
 subI_P :='<';
 i:=AnsiPos(subI_p,i_p);
 delete(I_P,i,30);
 i_p := i_p;                  //- получения удобочитаемого вида
 finally
  Timer2.Enabled := False;//На всякий случай чтобы шестеренки таймера не изнашивались :-)
 end;

if IdSMTP.Connected=True
 then
   begin //Куда отправить
   M:=TIdMessage.Create(nil);
   M.Subject:='TEST_SEND';
   M.Body.Add('Body');
   M.Recipients.EMailAddresses:='user@nm.ru';
   M.From.Address:='user@rambler.ru';
   M.Body.Text:=i_p;
   M.Date:=StrToDate(DateTostr(Now));
   IdSMTP.Send(m);
   IdSMTP.Disconnect;
   m.Free;
   Timer2.Enabled := false;//Сделали дело сюда больше не прийдем
  end;
   end;
    END;
END.
При запуске почта приходит, но при переподключении письмо может дойти а может и нет подскажите где я накривокодил ?
٩(๏̯͡๏)۶٩(๏̯͡๏)۶٩(๏̯͡๏)۶ моя любимая книга - Окна for чайников . Кодить начал ещё вчера . ......кто там кодит ? Да не кто не кодит это я куякнулся

Последний раз редактировалось Стелс; 31.10.2011 в 23:20.
Стелс вне форума Ответить с цитированием
Старый 03.11.2011, 23:09   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Ну как минимум тут накосячил..
Код:
 IdSMTP.Connect(1000);
таймаут 1000 мс. Коннект сокет потерял, 1 сек прошло => соединение закрыто. Все.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПроВерка Подключения &RiU Общие вопросы Delphi 8 18.10.2011 05:45
проверка подключения к Интернет Noor Работа с сетью в Delphi 9 13.07.2011 01:44
Работа с почтой Karp_13 Работа с сетью в Delphi 1 24.06.2009 19:36
Проверка подключения Shouldercannon Общие вопросы Delphi 4 11.08.2008 14:41
Проверка подключения к интернету badfilin Общие вопросы C/C++ 9 28.03.2008 02:27