Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas al enviar Mail con Indy (https://www.clubdelphi.com/foros/showthread.php?t=76632)

Lenny 14-11-2011 19:39:41

Problemas al enviar Mail con Indy
 
Buenas estimados, los molesto nuevamente, de antemano muchas gracias...

Tengo un IdSMTP y un IdMessage mas este codigo:

Código Delphi [-]
 
begin
IdMessage1.Recipients.EMailAddresses:=Edit1.Text;
IdMessage1.From.Address:= 'mail@mail.net';
IdMessage1.Subject:='envio de correo automático';
IdMessage1.Body.Text:=
'Para su información :' + #13#10 + #13#10 +
                   'El usuario '+ BDatos.RegHallazgos_T.FieldbyName('PGHallazgo').asString +
                   ' ha Levantado una ' + BDatos.RegHallazgos_T.FieldbyName('TipoDesviacion').asString +
                   ', Folio N° '+ BDatos.RegHallazgos_T.FieldbyName('idrhallazgo').asString + ' Con fecha '+ BDatos.RegHallazgos_T.FieldbyName('FECHA').asString +'''' +  #13#10 +
                   'Unidad De proceso:'+ BDatos.RegHallazgos_T.FieldbyName('UnidadProceso').asString + '''' + #13#10 +
                   'Responsable : '+ BDatos.RegHallazgos_T.FieldbyName('Responsable').asString +'''' + #13#10 +
                   'Descripción del Hallazgo: '+ BDatos.RegHallazgos_T.FieldbyName('DesHallazgo').asString +''''+ #13#10 +
                   'Por favor Realizar análisis de causa y acción inmediata antes de 7 días hábiles.' + #13#10 +
                   '' + #13#10 +
                   'Atte.' + #13#10 +
                   'SGC';
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
end;

He provado infinidad de codigos de este foro e internet en general... y este con ciertos ajustes es el que mas resultado me ha dado, el problema, al enviar el mail los acentos los aparecen con signos de interrogacion encerrados en un cuadro negro...
que estoy haciendo mal??? hay otra forma mas facil y mejor de enviar un mail a distintos destinatarios???, aparte, que me llegan a la bandeja de SPAM...

Ojala puedan ayudarme, en este caso necesito enviar los mails con sus acentos correspondientes y/o (ojala, si no, texto plano no mas) con formato, firma y logo???

De antemano muchas gracias...

PD: el por que me quede con este codigo??? es el unico que pude echar a andar que me deja de tener mas de un destinatario...
PD2: no es para ahcer SPAM, es que a veces se deve enviar el informe a 3, 5, 2 6 etc... personas distintas...

Lenny 14-11-2011 22:06:01

Solucionado!!!
 
Me autorespondo:

Código Delphi [-]
 
procedure TForm2.Button3Click(Sender: TObject);
begin
IdMessage1.ContentType := 'text/plain';
IdMessage1.CharSet := 'UTF-8';
IdMessage1.Recipients.EMailAddresses:=Edit1.Text;
IdMessage1.From.Address:= 'mail@mail.net';
IdMessage1.Subject:='envio de correo automático';
IdMessage1.Body.Text:=
'Para su información :' + #13#10 + #13#10 +
                   'El usuario '+ BDatos.RegHallazgos_T.FieldbyName('PGHallazgo').asString +
                   ' ha Levantado una ' + BDatos.RegHallazgos_T.FieldbyName('TipoDesviacion').asString +
                   ', Folio N° '+ BDatos.RegHallazgos_T.FieldbyName('idrhallazgo').asString + ' Con fecha '+ BDatos.RegHallazgos_T.FieldbyName('FECHA').asString +'''' +  #13#10 +
                   'Unidad De proceso:'+ BDatos.RegHallazgos_T.FieldbyName('UnidadProceso').asString + '''' + #13#10 +
                   'Responsable : '+ BDatos.RegHallazgos_T.FieldbyName('Responsable').asString +'''' + #13#10 +
                   'Descripción del Hallazgo: '+ BDatos.RegHallazgos_T.FieldbyName('DesHallazgo').asString +''''+ #13#10 +
                   'Por favor Realizar análisis de causa y acción inmediata antes de 7 días hábiles.' + #13#10 +
                   '' + #13#10 +
                   'Atte.' + #13#10 +
                   'SGC';
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
end;

Despues de muchas pruebas y error y buscar referentes a estos componentes di con la solucion, habia que agregar estas dos lineas al principio:

Código Delphi [-]
IdMessage1.ContentType := 'text/plain';
IdMessage1.CharSet := 'UTF-8';

Aun estoy haciendo alguans correcciones para depurar el asunto, cualquier duda si alguien tiene un problema similar, por ak estare, de antemano gracias y ojala esta solucion le sirva a alguien Byes!!!

joelphi 14-11-2011 22:18:37

Hola
 
mi buen amigo tengo un problema similar al tuyo, y al igual que tu ya he probado muchisimas veces codigo y nunca me queda..el codigo que mas se acerco al envio es este..
Código Delphi [-]

procedure TForm1.prueba;
var SMTP: TIdSMTP;
   mensaje: TIdMessage;

begin
   mensaje := TIdMessage.Create(nil);
smtp := TIdSMTP.Create(nil);
smtp.Username := 'notificaciones.1@gmail.com';
smtp.Password := 'contr@seña';
smtp.Host := 'smtp.gmail.com';
SMTP.Port := 587;
smtp.AuthType:=atSASL;

mensaje.Subject := 'Aviso de vencimiento de pago';
mensaje.From.Name := 'ventas elmar';
Mensaje.From.Address := 'correo _destino@hotmail.com';

mensaje.Body.Text := 'Probando el servicio de correo .......................';
mensaje.ContentType := 'text/html';


mensaje.Recipients.Add;
mensaje.Recipients[0].Address := 'correo_destino@hotmail.com'; // destinatario
 smtp.UseTLS:=utUseRequireTLS;

smtp.Connect;
try
try

smtp.SendMsg(mensaje,true);
//smtp.Send(mensaje);
ShowMessage('se envio correctamente a ');
except
on E: Exception do
ShowMessage(E.Message);
end;
finally
if smtp.Connected then
smtp.Disconnect;
end;
end;

Uso Delphi 2007
te agradeceria infinitamente si me ayudaras con un ejemplo o alguna referencia..por favor mi buen amigo...

de antemano Gracias...

Lenny 14-11-2011 22:36:26

pero... cual es el problema que tienes con este codigo??? puedes dar mas detalles???

joelphi 14-11-2011 22:48:17

hola
 
Primeramente gracias por contestar..mira el codigo pasado es muy simple..tengo este procedimientos que hace lo mismo pero me manda un error, te los describo acontinuacion..

Código Delphi [-]
procedure TForm1.EnviarMensaje(sUsuario, sClave, sHost, sAdjunto, sAsunto,
  sDestino, sMensaje: String);
var SMTP: TIdSMTP;
   Mensaje: TIdMessage;

   //Adjunto: TIdAttachment;
begin

  // Creamos el componente de conexión con el servidor
  SMTP := TIdSMTP.Create( nil );

  SMTP.Username := sUsuario;
  SMTP.Password := sClave;
  SMTP.Host := sHost;
  SMTP.Port := 587;
  smtp.AuthType:=atDefault;

  // Creamos el contenido del mensaje
  Mensaje := TIdMessage.Create( nil );
  Mensaje.Clear;
  Mensaje.From.Name := sDestino;
  Mensaje.From.Address := sDestino;
  Mensaje.Subject := sAsunto;
  Mensaje.Body.Text := sMensaje;
  
  try
    SMTP.Connect;
  except
    raise Exception.Create( 'Error al conectar con el servidor.' );
  end;
       if SMTP.Connected then
     SMTP.Send(Mensaje);

  FreeAndNil( Mensaje );
  FreeAndNil( SMTP );

  Application.MessageBox( 'Mensaje enviado correctamente.',
    'Fin de proceso',MB_ICONINFORMATION );
end;

Y LO MANDO A LLAMAR ASI..
Código Delphi [-]
EnviarMensaje('correo_proveedor@gmail.com', 'contr@seña', 'smtp.gmail.com',
             '-', 'Te envio mi documento',
             'Correo_destino@hotmail.com', 'Adjunto archivo: documento.zip');

EL ERROR ES ESTE..

"class EIdSMTPReplyError with Message 'Must issue a STARTTLS' command first"

SUCEDE CUANDO PASA POR ESTE CODIGO
SMTP.Send(Mensaje);

por ahora no enviare archivos adjuntos solo quiero enviar el correo..

NECESITO SU AYUDA...POR FAVOR...

Lenny 14-11-2011 23:14:37

Respuesta
 
Pregunta: Necesitas enviar/trabajar con GMAIL???, las respuestas seran enviadas a GMAIL?? o desde GMAIL???

Como sea, si necesitas por ahora enviar mails y luego adjuntos, revisa este codigo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 var
   smtp: TIdSMTP;
   mail: TIdMessage;
 begin
   smtp := TIdSMTP.Create(Self);
   mail := TIdMessage.Create(Self);
   with smtp do
   begin
     Port := 587;
     Host := 'smtp.gmail.com';
     Username := 'tucorreo@gmail.com';
     Password := '********';
   end;
   with mail do
   begin
     Recipients.Add;
     Recipients[0].Name := 'Lucho de las Rosas';
     Recipients[0].Address := 'correoqueresive@gmail.com'; //Puede ser cualqueira, no necesariamente GMAIL
     From.Name := 'Juanito Perez de los Palotes';
     From.Address := 'tumail@gmail.com';
     Subject := 'Pruebas';
     Body.Text := 'Pruebas 2';
   end;
   TIdAttachmentFile.Create(mail.MessageParts, 'C:\Pruebas.txt');
   smtp.Connect;
   try
     try
       smtp.Send(mail);
     except
       on E: Exception do
         ShowMessage(E.Message);
     end;
   finally
     if smtp.Connected then
       smtp.Disconnect;
   end;
   mail.Free;
   smtp.Free;
 end;

Si no te sirve, u obligatoriamente deves trabajar con el codigo antes expuesto nos avisas, y veremos que podemos hacer, un abrazo... Byes!!!

joelphi 15-11-2011 01:19:30

todavia no..
 
mi buen amigo algo no funciona con el ejemplo que me enviastes...:( o posiblemente sea yo :::
Adjunto el error..

Lenny 15-11-2011 02:02:16

puedes enviar el codigo tal cual lo tienes ahora en tu Delphi???

Enan0 16-11-2011 14:44:29

Te comento para enviar Emails a traves de Gmail tenes que Usar SSL,

hay varios ejemplos en la Seccion Internet. y varios en el FTP

Te recomiendo que Busques SMTP o GMAIL en la seccion Internet


La franja horaria es GMT +2. Ahora son las 21:40:14.

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