From memory it fails if you try. I think the SMTP component frees them...

 

From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On 
Behalf Of Ross Levis
Sent: Thursday, 4 August 2011 4:02 p.m.
To: 'NZ Borland Developers Group - Delphi List'
Subject: Re: [DUG] Email/SMTP code

 

I’m basically implementing the code below.  I was wondering why the 
TIdText.Create and TIdAttachmentFile.Create’s don’t need to be freed.  Does 
this occur automatically when the mail is sent?

 

Ross.

 

From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On 
Behalf Of David O'Brien
Sent: Thursday, 14 July 2011 7:12 p.m.
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] Email/SMTP code

 

Put the code in another project that doesn’t require admin access?

What server are you pointing at, and are you going through a proxy server?

 

Username & password are both blank in my implementation.

 

Here is a bit more up to date version from another project, this returns any 
error message.

function SendEmail(msgFrom, msgTo, msgCC, msgBCC, msgSubject: String; msgBody: 
TStringList; Attachments: TStringList): String ;

var

  IdMessage: TIdMessage;

  SMTP: TIdSMTP;

  t: TDateTime ;

  i: Integer ;

begin

  Result := '' ;

  try

    if ASettings.SMTPServer <> '' then

    begin

      SMTP := TidSMTP.Create(nil) ;

      IdMessage := TIdMessage.Create(SMTP);

      try

        MsgTo := Trim(MsgTo) ;

        if Length(MsgTo) > 0 then

          if MsgTo[Length(MsgTo)] = ';' then

            Delete(MsgTo, Length(MsgTo), 1) ;

        MsgCC := Trim(MsgCC) ;

        if Length(MsgCC) > 0 then

          if MsgCC[Length(MsgCC)] = ';' then

            Delete(MsgCC, Length(MsgCC), 1) ;

        MsgBCC := Trim(MsgBCC) ;

        if Length(MsgBCC) > 0 then

          if MsgBCC[Length(MsgBCC)] = ';' then

            Delete(MsgBCC, Length(MsgBCC), 1) ;

        idMessage.Clear ;

        idMessage.From.Address := msgFrom ;

        if MsgTo <> '' then

          idMessage.Recipients.Add.Address := msgTo ;

        if MsgCC <> '' then

          idMessage.CCList.Add.Address := msgCC ;

        if MsgBCC <> '' then

          idMessage.BccList.Add.Address := msgBCC ;

        idMessage.Subject := msgSubject ;

        with TIdText.Create(IdMessage.MessageParts, nil) do

        begin

          Body.Assign(msgBody) ;

          ContentType := 'text/html';

        end;

        if Assigned(Attachments) then

          for i := 0 to pred(Attachments.Count) do

            with TIdAttachmentFile.Create(idMessage.MessageParts, 
Attachments[i]) do

            begin

              ContentID := inttoStr(1000+i) ;

              ContentType := 'image/jpeg' ;

              Filename := ExtractFileName(Attachments[i]) ;

            end;

        t := now ;

        while (SMTP.Connected) and

          (now < t + 10 * (1/86400)) do // 10 Seconds

          sleep(10) ;

        SMTP.Host := ASettings.SMTPServer ;

        SMTP.Port := ASettings.SMTPPort ;

        SMTP.Username := ASettings.Username ;

        SMTP.Password := ASettings.Password ;

        SMTP.Connect ;

        try

          SMTP.Send(idMessage) ;

        finally

          SMTP.Disconnect ;

        end ;

      finally

        SMTP.Free ;

      end;

    end;

  except

    on e: Exception do

    begin

      Result := msgTo+': '+e.Message ;

      EmailFailed := True ;

    end;

  end ;

end ;

 

From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On 
Behalf Of John Bird
Sent: Thursday, 14 July 2011 6:06 p.m.
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] Email/SMTP code

 

Trying to debug this SMTP program, having tweaked the code a little – I am 
getting “Connection timed out” 

 

However I cannot debug, as on Windows 7 this program requires admin access.

 

I restarted the IDE (BDS.EXE) running as administrator but still get the error 
message

 

“Cannot create process”   (Debug)

 

or

 

“Access denied”  (Run without debugger).

 

Can run the program outside of the IDE by right clicking and selecting “Run as 
administrator” but there is no debugging then!

 

What have I missed?

 

John

_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi@delphi.org.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: 
unsubscribe

Reply via email to