Показать сообщение отдельно
  #1  
Старый 30.08.2017, 15:51
kamaliev kamaliev вне форума
Прохожий
 
Регистрация: 30.08.2017
Сообщения: 2
Версия Delphi: Delphi 10 Seatt
Репутация: 10
Восклицание Мой клиент @mail на Indy. Нужна помощь

Привет всем)
Кароче, чисто из-за интереса написал простенькую программу. чтобы рассылать письма на почту, используя ssl, smtp, messasge и тд
Программа работает при нажатии на кнопку и отправляет письмо)
Но вот беда: при повторном нажатии, программа "ругается")
Помогите это дело допилить)
Код:
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit,
  FMX.Controls.Presentation, FMX.StdCtrls, IdIOHandler, IdIOHandlerSocket,
  IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdMessage, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase,
  IdMessageClient, IdSMTPBase, IdSMTP, IdCustomTransparentProxy, IdSocks,
  IdAttachment, FMX.ScrollBox, FMX.Memo;

type
  TForm1 = class(TForm)
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
    Button1: TButton;
    IdSocksInfo1: TIdSocksInfo;
    Memo1: TMemo;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox4Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  A,B,C:string;
implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin

idSmtp1.Host:='smtp.mail.ru';
idSmtp1.Port:=25;
idSmtp1.Username:='trymbar';
idSmtp1.Password:='elvakamal';

IdSSLIOHandlerSocketOpenSSL1.Destination:= idSMTP1.Host+':'+IntToStr(idSMTP1.Port);
IdSSLIOHandlerSocketOpenSSL1.Host:=idSMTP1.Host;
IdSSLIOHandlerSocketOpenSSL1.Port:=idSMTP1.Port;
IdSSLIOHandlerSocketOpenSSL1.DefaultPort:=0;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:= sslvSSLv23;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode:= sslmUnassigned;

idSMTP1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
idSMTP1.UseTLS:=utUseImplicitTLS;
A:=Memo1.Text;
B:=Edit1.Text;
idMessage1.Body.Text:=A;
idMessage1.CharSet:='windows-1251';
idMessage1.From.Text:='trymbar@mail.ru';
idMessage1.Recipients.EMailAddresses:=B;
idMessage1.Subject:='Отсылка с программы';

idSMTP1.Connect();
if idSmtp1.Connected=true then
begin

if checkbox1.IsChecked then
      begin
        idMessage1.Recipients.EMailAddresses:='gabdelboka@mail.ru';
        idSmtp1.Send(idMessage1);
        ShowMessage ('Сообщение отправлено gabdelboka@mail.ru');
       end;
if checkbox2.IsChecked then
      begin
        idMessage1.Recipients.EMailAddresses:='iphonelvir@gmail.com';
        idSmtp1.Send(idMessage1);
        ShowMessage ('Сообщение отправлено iphonelvir@gmail.com');
       end;
if checkbox3.IsChecked then
      begin
        idMessage1.Recipients.EMailAddresses:='bogolyubzaytsevvco@mail.ru';
        idSmtp1.Send(idMessage1);
        ShowMessage ('Сообщение отправлено bogolyubzaytsevvco@mail.ru');
       end;
if checkbox4.IsChecked then
      begin
        idMessage1.Recipients.EMailAddresses:=B;
        idSmtp1.Send(idMessage1);
        ShowMessage ('Сообщение отправлено '+B);
       end;
end else
ShowMessage ('Не удалось отправить сообщение');
idSmtp1.Disconnect;
idSMTP1.Free;
idMessage1.Free;
//////////////

/////////////

end;


procedure TForm1.CheckBox4Change(Sender: TObject);
begin
edit1.Enabled:=checkbox4.IsChecked;
end;

end.

Вложения
Тип файла: rar прога.rar (1,016.5 Кбайт, 3 просмотров)
Ответить с цитированием