TIdEmailAddressItem undeclared code example

Example: TIdEmailAddressItem undeclared

Hello,

If you use ShellExecute you use/start an external application to send your email.
So, this application can not handle attachments in the execute parameters.
(I wonder how you fill the body and the mail address details.. and if this is possible
why doesn't it support attachments too?)

Two ways to send email with Delphi is to use OLE Automation, like
using Outlook components (standard in Delphi) but for this you need Outlook.
Another way is to use special (free) email components like the Indy components:

{code}
procedure MyObject.SendMail;
var
  IdSMTP: TIdSMTP;
  IdMessage: TIdMessage;
  IdEmailAddressItem: TIdEmailAddressItem;
  IdAttachment: TIdAttachment;
begin
  IdSMTP := TIdSMTP.Create(nil);
  try
    IdSMTP.Host := 'localhost';
    IdSMTP.Port := 25;
    IdSMTP.AuthType := satNone;//satDefault;
    //IdSMTP.Username := 'username';
    //IdSMTP.Password := 'password';
    IdSMTP.Connect;
    if IdSMTP.Authenticate then
    begin
      IdMessage := TIdMessage.Create(nil);
      try
        IdMessage.From.Name := 'No-Reply';
        IdMessage.From.Address := '[email protected]';
        IdMessage.Subject := 'E-Mail subject';
        IdMessage.Body.Add('This is a message');

        IdEmailAddressItem := IdMessage.Recipients.Add;
        IdEmailAddressItem.Address := '[email protected]';

        try
          IdAttachment := TIdAttachmentFile.Create(IdMessage.MessageParts, 'c:\path\to\attachmentfile.doc');
          IdSMTP.Send(IdMessage);
        finally
          IdAttachment.Free;
        end;
      finally
        IdMessage.Free;
      end;
    end;
    IdSMTP.Disconnect;
  finally
    IdSMTP.Free;
  end;
end;
{code}