Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Enviar correo desde Lazarus (https://www.clubdelphi.com/foros/showthread.php?t=83002)

reevil 01-05-2013 21:36:11

Enviar correo desde Lazarus
 
A modo de contexto les comento que estoy trabajando con Lazarus (CodeTyphon en su ultima versión) sobre Manjaro 64bit (GNU/Linux).

La aplicación funciona correctamente en lo que al manejo de la base de datos se refiere, pero cuando trato de enviar un correo utilizando los componentes Indy (idSMTP, idMessage) que son con lo que acostumbraba a hacer esto desde C++ Builder (varias versiones, la ultima en que lo probé y funciono era la XE2).

Tengo este pequeño ejemplo en el que trato de hacerlo lo mas básico que puede (sin archivos adjuntos, indicando incluso en que Form están los componentes...)

Código Delphi [-]
//SMTP es un idSMTP  y Mensaje un idMessage.
begin
  Form1.SMTP.Host:='mail.dominio.com';
  Form1.SMTP.Port:=25;
  Form1.SMTP.AuthType:=satDefault;
  //    Form1.SMTP.AuthType:=satSASL; // no lo solicita el servidor.
  Form1.Mensaje.From.Address := 'nombre@servidor.com';
  Form1.Mensaje.Recipients.EMailAddresses := 'nombre@servidor.com';
  Form1.Mensaje.Subject:='Subject';
  Form1.Mensaje.Body.Text:='Body';
  try
    try
      Form1.SMTP.Connect;
      Application.processmessages; // comentando esta linea tampoco me funciona.
      Form1.SMTP.Send(Form1.Mensaje) ;
    except on E:Exception do
      ShowMessage('Error al enviar');
    end;
  finally
    if Form1.SMTP.Connected then
      Form1.SMTP.Disconnect;
  end;
end;

Ahora el problema es que al momento de compilar no me marca error y al ejecutar el procedimiento simplemente no pasa nada, no me regresa ningún mensaje, así que no tengo pistas de donde pueda estar el problema.

reevil 01-05-2013 21:42:36

Algún moderador que me ayude a corregir el mensaje? :o
Algo me fallo al querer resaltar el código y ahora no puedo editarlo.

reevil 02-05-2013 10:21:31

Después de unas horas batallando me di por vencido con las INDY y opte por Synapse.
Código Delphi [-]
uses
   SMTPSend, MIMEPart, MIMEMess;
procedure TForm.SendEmailClick(Sender: TObject); 
var   
  MIMEText: TStrings;   
  MIMEPart: TMimePart;   
  MIMEMessage: TMimeMess; 
begin   
  MIMEText := TStringList.Create;   
  MIMEText.Add('Hello,');   
  MIMEText.Add('here is the text of your e-mail message,');   
  MIMEText.Add('if you want the HTML format, use AddPartHTML');   
  MIMEText.Add('or e.g. AddPartHTMLFromFile if you have your');   
  MIMEText.Add('HTML message content in a file.');    
  MIMEMessage := TMimeMess.Create;    
  with MIMEMessage do   
  try     
    Header.Date := Now;     
    Header.From := 'sender@from.com';     
    Header.ToList.Clear;     
    Header.ToList.Add('recipient@to.com');     
    Header.CcList.Clear;     
    Header.Subject := 'E-mail subject';     
    Header.XMailer := 'My mail client name';      
    MIMEPart := AddPartMultipart('mixed', nil);      
    AddPartText(MIMEText, MIMEPart);     
    AddPartBinaryFromFile('c:\voucher.pdf', MIMEPart);      
    EncodeMessage;      
    if SendToRaw(Header.From,  // e-mail sender                  
                 Header.ToList.CommaText,   // comma delimited recipient list                  
                 'smtp.server.com',         // SMTP server                  
                 Lines,                     // MIME message data                  
                 'login',                   // server authentication                  
                 'password')                // server authentication     
    then       
      ShowMessage('E-mail has been successfuly sent :)')     
    else       
      ShowMessage('E-mail sending failed :(');   
  finally     
    Free;     
    MIMEText.Free;   
  end; 
end;

Añadiendo las librerías y con las modificaciones para adaptarlo a mis necesidades, va perfecto ese código.

Lo encontré aquí: http://stackoverflow.com/questions/6...lient-agnostic

pedrolazarus 02-05-2013 19:40:10

Cita:

Empezado por reevil (Mensaje 459693)
Después de unas horas batallando me di por vencido con las INDY y opte por Synapse.
Código Delphi [

Añadiendo las librerías y con las modificaciones para adaptarlo a mis necesidades, va perfecto ese código.

Lo encontré aquí: http://stackoverflow.com/questions/6...lient-agnostic

Bueno de una pregunta paso a un aporte :), se agradece.

reevil 03-05-2013 06:53:01

Es de lo que se tratan los foros, pero parece que a la gran mayoría se les olvida.
Al resolver al problema hay que poner la solución.
Saludos.


La franja horaria es GMT +2. Ahora son las 13:18:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi