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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2011, 17:25   #1
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию почта

посылаю сообщение на мыло таким кодом
Код:
try
   statusbar1.Panels[0].Text:='Ñèñòåìíîå ñîîáùåíèå: Ïîñûëàåì äàííûå î ïîäêëþ÷åíèè...';
  screen.cursor := crHourglass;
  if not IdSMTP1.Connected then IdSMTP1.Connect();
  sleep(300);
  IdSMTP1.Send(IdMessage1);
  IdSMTP1.Disconnect;
  screen.cursor := crDefault;
  statusbar1.Panels[0].Text:='';
  list.Timer1.Enabled:=true;
  timer1.Enabled:=false;



Except
  statusbar1.Panels[0].Text:='Ñèñòåìíîå ñîîáùåíèå: Íå óäàëîñü óñòàíîâèòü ñîåäèíåíèå  ';
  screen.cursor := crDefault;
  timer1.Enabled:=false;
  application.MessageBox('Ïðîâåðüòå ïîäåëþ÷åíèå ê Èíòåðíåòó è ïåðåçàïóñòèòå ïðîãðàììó','Îøèáêà ïîäêëþ÷åíèÿ ê Èíòåðíåòó',0);
  form2.Enabled:=true;
end;
но дает ошибки 'syntactically invalid HELO argument(s)','5.5.1 Bad seuence of commands'

получаю сообщение
Код:
Try
if not list.IdPOP31.Connected then list.IdPOP31.Connect();
me:=list.IdPOP31.CheckMessages;
for ii:=1 to me do
  begin
    list.IdPOP31.Retrieve(ii,list.IdMessage1);
      if DecodeStr(list.IdMessage1.Subject)='d' then {помннять = на <>}
        begin
          list.listbox1.Items.add('IP: '+DecodeStr(list.IdMessage1.Subject));
        //чета еще
        end;
 
  end;
 
list.IdPOP31.Disconnect;
Except
тут ошибка 'soket error #10057'
помогите разобраться плиз
spydark91 вне форума Ответить с цитированием
Старый 23.07.2011, 19:52   #2
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию

ут дает ошибки 'syntactically invalid HELO argument(s)' и '5.5.1 Bad seuence of commands'. и еще постоянно на except слетает..
и я так понимаю,что этот код забивает поток моей программы,потому что она даже закрываться не хочет,когда нажимаю крестик. оформил в поток
сам поток
Код:
 
unit Unit11;
 
interface
 
uses
  Classes,windows;
 
type
  refresh = class(TThread)
  private
    procedure newrefresh;
    procedure addnewip;
    procedure error;
  protected
    procedure Execute; override;
  end;
 
implementation
uses unit2,unit7;
{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,
 
      Synchronize(UpdateCaption);
 
  and UpdateCaption could look like,
 
    procedure refresh.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }
 
{ refresh }
 
procedure refresh.newrefresh;
begin
list.IdMessage1.Clear;
list.listbox1.Clear;
end;
 
procedure refresh.addnewip;
begin
list.listbox1.Items.add('IP: '+list.DecodeStr(list.IdMessage1.Subject));
//чета еще
end;
 
procedure refresh.error;
begin
list.Visible:=true;
list.Show;
list.Button2.Click;
list.button1.Visible:=true;
end;
 
procedure refresh.Execute;
var me,ii:integer;
begin
repeat
Synchronize(newrefresh);
Try
if not list.IdPOP31.Connected then list.IdPOP31.Connect();
me:=list.IdPOP31.CheckMessages;
for ii:=1 to me do
  begin
    list.IdPOP31.Retrieve(ii,list.IdMessage1);
      if list.DecodeStr(list.IdMessage1.Subject)='d' then {iiiiiyou = ia <>, iiiaiyou ia unit2.ip} Synchronize(addnewip);
  end;
list.IdPOP31.Disconnect;
Except
Synchronize(error);
end;
sleep(unit2.refr*1000);
if terminated then exit;
until true;
end;
 
end.
и форма из которой он должен запускаться
Код:
unit Unit7;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdPOP3, StdCtrls, ExtCtrls, IdMessage, IdCoder,
  IdCoder3to4, IdCoderMIME, CheckLst,unit11;
 
type
  TList = class(TForm)
    IdPOP31: TIdPOP3;
    IdMessage1: TIdMessage;
    IdDecoderMIME1: TIdDecoderMIME;
    Listbox1: TCheckListBox;
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
 
  private
    re:refresh;
  public
    function DecodeStr(Text: string): string;
  end;
 
 
var
  List: TList;
 
  stat:integer;
 
 
 
implementation
uses unit2;
{ВЫРЕЗАНО}
 
{$R *.dfm}
 
 
 
procedure TList.FormCreate(Sender: TObject);
begin
stat:=3;
list.IdPOP31.Host:='pop.mail.ru';
list.IdPOP31.Port:=110;
list.IdPOP31.Username:='lsdfho43lhcc';
list.IdPOP31.Password:='ldybco;38y0;l\cu';
end;
{procedure TList.Timer1Timer(Sender: TObject);
var me,ii:integer;
begin
Try
if not list.IdPOP31.Connected then list.IdPOP31.Connect();
me:=list.IdPOP31.CheckMessages;
for ii:=1 to me do
  begin
    list.IdPOP31.Retrieve(ii,list.IdMessage1);
      if DecodeStr(list.IdMessage1.Subject)='d' then {помннять = на <>}
        {begin
          list.listbox1.Items.add('IP: '+DecodeStr(list.IdMessage1.Subject));
        //чета еще
        end;
 
  end;
 
list.IdPOP31.Disconnect;
Except
timer1.enabled:=false;
list.Visible:=true;
list.Show;
application.MessageBox('Ошибка подключения: не удалось обновить список. Проверьте подеключение к Интернету','Ошибка подключения к Интернету',0);
button1.Visible:=true;
end;
end; }
 
 
procedure TList.Button1Click(Sender: TObject);
begin
                           //продолжаем поток
button1.Visible:=false;
end;
 
procedure TList.Button2Click(Sender: TObject);
begin
application.MessageBox('Ошибка подключения: не удалось обновить список. Проверьте подеключение к Интернету','Ошибка подключения к Интернету',0);
end;
 
procedure TList.Timer1Timer(Sender: TObject);
begin
re:=refresh.Create(false);//делаю по книге,там написано так же, но у меня тут дает ошибку [Error] Unit7.pas(281): Record, object or class type required
re.Priority:=tpLower;
timer1.Enabled:=false;
end;
 
end.
помогите пожалуйста

ошибки сокетов не пропали
spydark91 вне форума Ответить с цитированием
Старый 23.07.2011, 20:30   #3
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

простенький пример отправки письма
у меня работает:

добавить в проект в Uses IdSMTP, IdMessage

Код:
 public
    FIdSMTP: TIdSMTP;
      FIdMessage: TIdMessage;
      procedure SendMail(Port:DWORD; Host, UserName, Password, EMailAddresses, From, Subject, Body: String);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SendMail(Port:DWORD; Host, UserName, Password, EMailAddresses, From, Subject, Body: String);
begin
FIdSMTP.Port:=Port; // порт по которому будет осуществляться подключение
FIdSMTP.Host:=Host; // адресс почтового сервера
FIdSMTP.UserId:=UserName; // логин пользователя
FIdSMTP.Password:=Password; // пароль пользователя
FIdSMTP.AuthenticationType:=atLogin;
FIdMessage.Recipients.EMailAddresses:= EMailAddresses; // майл получателя письма
FIdMessage.From.Text := From; // майл отправителя письма
FIdMessage.Subject := Subject; // тема письма
FIdMessage.Body.Text :=Body; // передача текста в компонент IdMessage, для последующей отправки
//Эти два параметра можно вставить в поток чтобы не тормозили проект
FIdSMTP.Connect; // соединение с почтовым сервером
FIdSMTP.Send(FIdMessage); //Отправка
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//Создаем компоненты
FIdSMTP:= TIdSMTP.Create(nil);
FIdMessage:= TIdMessage.Create(nil);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
//Уничтожаем компоненты
FIdSMTP.Free;
FIdMessage.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//Заполняем функцию отправки письма
SendMail(25, 'smtp.mail.ru', 'Ваше имя в почтовике', 'Пароль',
'Почтовик получателя@mail.ru', 'Ваш почтовик@mail.ru', 'Название письма', 'Текст письма');
end;

Последний раз редактировалось Aliens_wolfs; 23.07.2011 в 20:42.
Aliens_wolfs вне форума Ответить с цитированием
Старый 25.07.2011, 19:15   #4
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию

просто отправить письмо у меня тоже получается
не получается принять. и ошибки вот такие
spydark91 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почта.... Hausedark Общие вопросы Delphi 9 09.07.2010 17:00
не отправляется почта al_go_r1tm HTML и CSS 1 01.07.2010 15:58
почта xakkkkker Работа с сетью в Delphi 1 20.11.2008 14:52
Почта dmitrymoskva Общие вопросы Delphi 8 05.12.2007 13:00