List index out of bonds (1)

vlad275

Подскажите пожалуйста в чем ошибка? Delphi 2007 Light при запуске программы сначала завершает программу, а потом сам закрывается.
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, StdCtrls, idMessage, IdEMailAddress,
  IdExplicitTLSClientServerBase, IdSMTPBase, ExtCtrls;
 
type
    TForm2 = class(TForm)
 
 
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    IdSMTP1: TIdSMTP;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form2: TForm2;
  Text1: String;
  iStarted: integer;
  i:Integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm2.Button1Click(Sender: TObject);
var
  M: TIdMessage;
begin
  M := TIdMessage.Create(Form2);
 
 
        M.Subject:='subj';
       M.Body.Add('text');
       M.Recipients.Add;
       M.Recipients.Items[1].Text :='[removed_email]';
       M.Recipients.Add;
       M.Recipients.Items[2].Text :='[removed_email]';
       IdSMTP1.Host := Edit1.Text;
       IdSMTP1.Username := Edit2.Text;
       IdSMTP1.Password := Edit3.Text;
       M.From.Text := Edit4.Text; //отправитель
       IdSMTP1.Connect();
       if IdSMTP1.Connected then
         begin
            IdSMTP1.Send(M);
            i:=i+1;
            Label5.Caption:=IntToStr(i);
         end;
       IdSMTP1.Disconnect;
 
  end;
end.
2 ответа

vlad275

может вместо
M.Recipients.Add;
 M.Recipients.Items[1].Text :='[removed_email]';
 M.Recipients.Add;
 M.Recipients.Items[2].Text :='[removed_email]';
указать просто
M.Recipients.EMailAddresses:='[removed_email]'
для информации
 M.Subject:='тема сообщения';                      //текст темы сообщения
 M.Recipients.EMailAddresses:='[removed_email]'; //указываем адрес получателя 
 M.From.Adress:='[removed_email]';          //указываем автора письма
 M.Body.Text:='текст сообщения';              //размещаем текст сообщения
 M.Date:=StrToDate('01.12.2004');//дата отправки письма может быть любой
 end;


vlad275

Прога не отправляет мыло. Ошибка - превышен time out. Провайдер заблокировал? Можно ли что-нибудь сделать?
First chance exception at $765FC41F. Exception class EIdSocketError with message 'Socket Error # 10060 Connection timed out.'. Process Project1.exe (3536)
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, StdCtrls, idMessage, IdEMailAddress,
  IdExplicitTLSClientServerBase, IdSMTPBase, ExtCtrls;
 
type
    TForm1 = class(TForm)
 
 
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Timer1: TTimer;
    IdSMTP1: TIdSMTP;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Text1: String;
  iStarted: integer;
  i:Integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  M: TIdMessage;
begin
  M := TIdMessage.Create(Form1);
       M.Subject:='subj';
       M.Body.Text:='Здравствуйте';
       M.Recipients.EMailAddresses:='[removed_email]';
       M.From.Address:='[removed_email]';
        IdSMTP1.Host := Edit1.Text;
       IdSMTP1.Username := Edit2.Text;
       IdSMTP1.Password := Edit3.Text;
       IdSMTP1.Connect();
       if IdSMTP1.Connected then
         begin
            IdSMTP1.Send(M);
            i:=i+1;
            Label4.Caption:=IntToStr(i);
         end;
       IdSMTP1.Disconnect;
 
  end;
end.
Подскажите пожалуйста почему не отправляется почта?