Jump to content

NBilov

Members
  • Content Count

    12
  • Joined

  • Last visited

Posts posted by NBilov


  1. I use delphi 11.3 Alexandria, lite. But there unlike previous versions i worked with (Delphi 2010, Delphi 10.4.2), dosent work code completion. When I am typing i need to press ctrl + space everytime I need a list of variants. Maybe i name this feature improperly, probably it names "auto invoke". I tried to set a parameter somewhere in tools- options -language . But it didn't change this behavior.

    And one more disadvantage in this new version. In this list of variants code templates (for, class ... etc.) are under everything other ( functions, variables etc .) . Can i change this sorting order too ?


  2. "

    IdSMTP1.Connect;

        IdSMTP1.Authenticate;

        if IdSMTP1.DidAuthenticate then

          begin

            IdSMTP1.Send(IdMessage1);

          end; "

    Is this better than my previous "

    idSMTP1.Connect;

          idSMTP1.Send(idMessage1);"

     With 587 port too ? Old variant was working being compiled on Delphi 2010 since 2016 with quite large volumes without much trouble.


  3. I have windows 7 . My program sended mail by smtp , with ssl encoding. It worked without any problems on Delphi 2010 , when the same code was compiled on Delphi 10.4.2 it started to raise error " SSL negotiation failed." I need to send from @yandex.ru mail where ssl encoding is obligatory. How can i make such sending on this operation system and compiled with this version of Delphi ?

    My code:

    procedure TfmMain.buSimpSendClick(Sender: TObject);
    var
      IdSMTP1: TIdSMTP;
      idMessage1: TIdMessage;
      idAttach: TidAttachment;
      idText1: TidText;
      msgParts: TidMessageParts;
      DT:TDateTime;
      IdSSLIOHandlerSocketOpenSSL1:TIdSSLIOHandlerSocketOpenSSL;
      MailHost,EmpPsw,EmpUser: string;
      EmPort: Integer;
      EmpEmail: string;
      EmpName: string;
      EmailTo: string;
      I: Integer;
      wassent: Boolean;
      ini: TIniFile;
    begin
      EmPort := 587;

      EmailTo :=  '';

      ini := Tinifile.Create(ChangeFileExt(paramStr(0),'.ini')) ;
      try
        MailHost := ini.ReadString('C','MailHost','');
        EmpPsw := ini.ReadString('C','EmpPsw','');
        EmpUser := ini.ReadString( 'C','EmpUser','');
        EmPort := ini.ReadInteger('C','EmPort',0);
        EmailTo := ini.ReadString('C','EmailTo','');

      finally
        ini.Free;
      end;

      memo1.Text := '';
      Edit1.Text :=  'MailHost='+MailHost+','+'EmpPsw='+EmpPsw+','+'EmpUser='+EmpUser+','+'EmPort='+IntToStr(EmPort)+','+'EmailTo='+EmailTo
      ;
      EmpName := empemail;//(nil);

      wassent := True and false;//(nil);
     

      IdSMTP1 := TIdSMTP.Create(nil) ;
      try
      try
        IdSMTP1.Host:= MailHost;
        IdSMTP1.Password:= EmpPsw;
        IdSMTP1.Username:= EmpUser;
     

        IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(IdSMTP1);

        IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
        IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
        IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 0;

        IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
        if EmPort>0 then
        IdSMTP1.Port := EmPort
        else
        IdSMTP1.Port := 465;
        IdSMTP1.UseTLS := utUseExplicitTLS;

        idMessage1 := TIdMessage.Create(IdSMTP1);

        idMessage1.OnInitializeISO := TCL.LInitializeISO;
        idMessage1.From.Address := EmpEmail;
        idMessage1.From.Name := EmpName;

        idMessage1.Subject := 'EmSubject'+DateTimeToStr(now);//'Письмо с картинкой AComp'+FormatDateTime('dd.mm.yyyy hh:mm:ss',Now);

        idMessage1.CharSet := 'Windows-1251';
        idMessage1.ContentTransferEncoding  := '8bit';

        msgParts := idMessage1.MessageParts;
        try
          // Load slBody with your HTML text...
          idText1 := TidText.Create(msgParts);//, slBody);
          idText1.ContentType := 'text/html';
          idText1.CharSet := 'Windows-1251';
          idText1.ContentTransfer := '8bit';
          //if FileExists(EmBodyFileName) then
          idText1.Body.Text := ' (EmailBody)'+ParamStr(0);
          idMessage1.Recipients.EMailAddresses := EmailTo;
          idSMTP1.Connect;
          idSMTP1.Send(idMessage1);
          ShowMessage('Sent ok,''EmPort='+IntToStr(EmPort)); wassent := True;

        finally
          if idSMTP1.Connected then
          idSMTP1.Disconnect;

        end;

      except on E: Exception do Memo1.text :=  Memo1.text + #13#10 + 'EmPort='+IntToStr(EmPort)+#13#10+ E.Message;
      end;
      finally
        IdSMTP1.Free;
        self.caption := TimeToStr(now);
      end;
    end;

×