Para instalar los componentes indy recomiendo la siguiente dirección.
http://www.lazarus.freepascal.org/index.php?topic=6902.0
Una vez instalado.
Empezando un proyecto nuevo y creamos el siguiente form.
[img]http://https://6317453537255906574-a-1802744773732722657-s-sites.googlegroups.com/site/martinartaza5/Home/ImagenFormulario.JPG?attachauth=ANoY7cpC0wcAQF9phSwk2Y1tSZotUkPQRsV2sH1QWkRNIOXjanXJyvldmfYlEAYp2ayGKYHG7VxPmDU7MpCtLA9wFcSjToNxR-B1QVmMQu2n56-uXWKYAk4B90Kd8asZnQmvQ7Gx7HuOiyZaTbPDfsW225vTowr1XDlg35eebQMrdd_Dbha4_NDPx2S43v4sSg3NORVIWnvjeHh-Lnp5F7rvvKW50QpUBw%3D%3D&attredirects=0[/img]
Se crea una función, que es el corazon del proyecto !!!!!!!!!!Muchas gracias Fredycc¡¡¡¡¡¡¡¡¡¡¡¡¡
delphi
function TFEnviar1.sendMail(SMTP_Server:String; SMTP_Port:Integer; SMTP_AuthType:TIdSMTPAuthenticationType; SMTP_UseTLS:TIdUseTLS; From_Mail, From_Name, From_Pass, To_List_Emails, Mail_Subject:String; Body_Message:TMemo):String; var IdMessage1: TIdMessage; IdSMTP1:TIdSMTP; IdSSLSocket: TIdSSLIOHandlerSocketOpenSSL; lista:TStringList; i:integer; begin IdMessage1 := TIdMessage.Create(nil); IdSMTP1 := TIdSMTP.Create(nil); IdSSLSocket := TIdSSLIOHandlerSocketOpenSSL.Create(nil); //IdSSLSocket.OnStatusInfo := @OpenSSLStatusInfo; IdSMTP1.IOHandler := IdSSLSocket; idSMTP1.AuthType := SMTP_AuthType; idSMTP1.Host := SMTP_Server; idSMTP1.Port := SMTP_Port; idSMTP1.Username:= From_Mail; idSMTP1.Password:= From_Pass; idSMTP1.UseTLS := SMTP_UseTLS; IdMessage1.From.Text := From_Mail; IdMessage1.From.Name := From_Name; IdMessage1.Recipients.EMailAddresses := To_List_Emails; IdMessage1.Subject := UTF8ToAnsi(Mail_Subject); lista:= TStringList.Create; for i:=0 to Body_Message.lines.count-1 do lista.Add(Body_Message.lines[i]); IdMessage1.Body.Clear; IdMessage1.Body.Text := lista.Text; //CargaMensajeMail(From_Mail,To_List_Emails,UTF8ToAnsi(Mail_Subject),lista); try idSMTP1.Connect; application.processmessages; IdSMTP1.Send(IdMessage1); except on E: Exception do ShowMessage('Failed: ' + E.Message); end; idSMTP1.Disconnect(); IdMessage1.Free; IdSMTP1.Free; IdSSLSocket.Free; end;
Y los botones deben llamar a la función con los datos de nuestra cuenta de correo, para gmail es.
delphi
procedure TFEnviar1.BTNEnviarClick(Sender: TObject); begin sendMail('smtp.gmail.com',587,satDefault,utUseExplicitTLS,'martin.artaza@gmail.com', Edeparte.text,'tuclave',edestino.Text,easunto.text, Memo1); end;
y para mandar un SMS es (para argentina):
delphi
procedure TFEnviar1.Button1Click(Sender: TObject); var direccion: string; begin direccion := earea.text + enumero.Text; case cbCompania.ItemIndex of 0: begin direccion := direccion + '@sms.ctimovil.com.ar'; end; 1: begin direccion := direccion + '@sms.movistar.net.ar'; end; 2: begin direccion := direccion + '@personal-net.com.ar'; end; end; sendMail('smtp.gmail.com',587,satDefault,utUseExplicitTLS,'martin.artaza@gmail.com', Edeparte.text,'tuclave', direccion,easunto.text, Memo1); end;
Bueno, le dejo el código completo.
delphi
unit UEnviarMail; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, IdHTTP, IdSMTP, IdMessage, IdPOP3, IdSSLOpenSSL, IdAttachment, IdAttachmentFile, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdGlobal, IdCmdTCPServer; { , IdException, IdServerIOHandler; } type { TFEnviar1 } TFEnviar1 = class(TForm) BTNEnviar: TButton; Button1: TButton; Button2: TButton; CBCompania: TComboBox; EDestino: TEdit; Edeparte: TEdit; EAsunto: TEdit; EArea: TEdit; ENumero: TEdit; IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Memo1: TMemo; procedure BTNEnviarClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { private declarations } public function sendMail(SMTP_Server:String; SMTP_Port:Integer; SMTP_AuthType:TIdSMTPAuthenticationType; SMTP_UseTLS:TIdUseTLS; From_Mail, From_Name, From_Pass, To_List_Emails, Mail_Subject:String; Body_Message:TMemo):String; end; var FEnviar1: TFEnviar1; implementation {$R *.lfm} { TFEnviar1 } { TFEnviar1 } function TFEnviar1.sendMail(SMTP_Server:String; SMTP_Port:Integer; SMTP_AuthType:TIdSMTPAuthenticationType; SMTP_UseTLS:TIdUseTLS; From_Mail, From_Name, From_Pass, To_List_Emails, Mail_Subject:String; Body_Message:TMemo):String; var IdMessage1: TIdMessage; IdSMTP1:TIdSMTP; IdSSLSocket: TIdSSLIOHandlerSocketOpenSSL; lista:TStringList; i:integer; begin IdMessage1 := TIdMessage.Create(nil); IdSMTP1 := TIdSMTP.Create(nil); IdSSLSocket := TIdSSLIOHandlerSocketOpenSSL.Create(nil); //IdSSLSocket.OnStatusInfo := @OpenSSLStatusInfo; IdSMTP1.IOHandler := IdSSLSocket; idSMTP1.AuthType := SMTP_AuthType; idSMTP1.Host := SMTP_Server; idSMTP1.Port := SMTP_Port; idSMTP1.Username:= From_Mail; idSMTP1.Password:= From_Pass; idSMTP1.UseTLS := SMTP_UseTLS; IdMessage1.From.Text := From_Mail; IdMessage1.From.Name := From_Name; IdMessage1.Recipients.EMailAddresses := To_List_Emails; IdMessage1.Subject := UTF8ToAnsi(Mail_Subject); lista:= TStringList.Create; for i:=0 to Body_Message.lines.count-1 do lista.Add(Body_Message.lines[i]); IdMessage1.Body.Clear; IdMessage1.Body.Text := lista.Text; //CargaMensajeMail(From_Mail,To_List_Emails,UTF8ToAnsi(Mail_Subject),lista); try idSMTP1.Connect; application.processmessages; IdSMTP1.Send(IdMessage1); except on E: Exception do ShowMessage('Failed: ' + E.Message); end; idSMTP1.Disconnect(); IdMessage1.Free; IdSMTP1.Free; IdSSLSocket.Free; end; procedure TFEnviar1.BTNEnviarClick(Sender: TObject); begin sendMail('smtp.gmail.com',587,satDefault,utUseExplicitTLS,'martin.artaza@gmail.com', Edeparte.text,'tuclave',edestino.Text,easunto.text, Memo1); end; procedure TFEnviar1.Button1Click(Sender: TObject); var direccion: string; begin direccion := earea.text + enumero.Text; case cbCompania.ItemIndex of 0: begin direccion := direccion + '@sms.ctimovil.com.ar'; end; 1: begin direccion := direccion + '@sms.movistar.net.ar'; end; 2: begin direccion := direccion + '@personal-net.com.ar'; end; end; sendMail('smtp.gmail.com',587,satDefault,utUseExplicitTLS,'martin.artaza@gmail.com', Edeparte.text,'tuclave', direccion,easunto.text, Memo1); end; procedure TFEnviar1.Button2Click(Sender: TObject); begin close; end;
Bueno, ya se que para otros esto es pan comido, pero para otros esto le puede servir de ayuda.