Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Envio de mails con una aplicación (https://www.clubdelphi.com/foros/showthread.php?t=26567)

pampitasnowman 27-10-2005 00:16:33

Envio de mails con una aplicación
 
Hola a todos! Tengo la siguiente inquietud: Tengo una aplicación que corre en los hogares de los clientes. Una de las opciones de la aplicación es la posibildiad de enviarme un mail a una casilla mía de un hosting. Hasta ahí está todo Ok, porque con las Indy 9 (TidMessage, TidSMTP), me envio el mail a mi cuenta, el usuario solo ingresa su nombre y un archivo adjunto, nada mas. Pero ahora quiero ponerle tambien la opción de que el pueda enviar un mail a otra persona, con archivos adjuntos y el problema se me plantea con la parte del Host. ¿Si el mail sale desde la casa del usuario X al usuario Y, tengo que saber que SMTP tiene el proveedor de internet del usuario x? Lo que yo quiero es simplemente, que el usuario X ponga su dirección de mail, la dirección del destinatario, adjunte los archivos y que ponga enviar. Solo eso. Si no me supe explicar avisen que me expreso mas, o si alguno tiene una idea de como hacerlo le estaré agradecido, muchas gracias y saludos! Nacho.

dec 27-10-2005 00:28:19

Hola,


Cita:

Empezado por pampitasnowman
(...) ¿Si el mail sale desde la casa del usuario X al usuario Y, tengo que saber que SMTP tiene el proveedor de internet del usuario x? (...)

Pues sí. Deberás conocerlo para utilizarlo al enviar el correo. Puedes preguntárselo al propio usuario (solo una vez, luego guardarlo). No creo que represente un problema si el usuario hace uso de algún que otro cliente de correo: la mayoría solicitan este dato y el usuario debería saber de qué se habla: tú podrías recordárselo también.

Otra opción estaría en un "SMTP Relay Server", pero, personalmente, me pierdo aquí. Tienes la posibilidad de utilizar algún que otro componente: yo he usado a veces el "TSmtpRelay" y me ha ido bastante bien: es un componente que cuesta 19 dólares sin código fuente y 55 con el código fuente incluido.

jachguate 27-10-2005 01:46:29

Cita:

Empezado por pampitasnowman
¿Si el mail sale desde la casa del usuario X al usuario Y, tengo que saber que SMTP tiene el proveedor de internet del usuario x? Lo que yo quiero es simplemente, que el usuario X ponga su dirección de mail, la dirección del destinatario, adjunte los archivos y que ponga enviar.

Hola.

Esto es posible utilizando tu propio servidor smtp. Supongamos que tenes registrado un dominio que se llama pampitasnowman.com, cuyo smtp es smtp.pampitasnowman.com

Podes enviar el correo a través de este, con tus propias credenciales, pero indicando en el from la dirección de email de tu usuario.

Hasta luego.

;)

Enan0 27-10-2005 13:42:05

Hola pampita, con respecto al SMTP, vos ya lo debes tener configurado (ya que la aplicacion te envia un mail a vos misma. el unico problema que podes llegar a tener es que, si vos queres hacer Relay (o algo asi) que seria enviarlo a otras personas de otros dominios, vas a tener que loguarte con USUARIO y PASSWORD.

jachguate 27-10-2005 17:54:29

Cita:

Empezado por Enan0
vas a tener que loguarte con USUARIO y PASSWORD.

Esto no necesariamente es cierto, depende generalmente de cómo esté configurado el servidor smtp (y si soporta el relay o no, que hay los que no lo hacen. :D).

Hasta luego.

;)

pampitasnowman 27-10-2005 19:50:54

Gracias a todos por tomarse su tiempo y responder! Es mas o menos asi:
Con el siguiente código, me envio a una casilla mia de un hosting un mail, pero esto estransparente al usuario, el solo adjunta un archivo y pone su nombre:

Código Delphi [-]
SMTP.Host := 'mail.pepito.com';
SMTP.Port := 25;
SMTP.Password := 'xxyy';
SMTP.Username := 'pedidos@pepito.com';
Mail.ClearBody;
Mail.From.Name := 'Pedido Fotográfico';
Mail.Subject := 'Cliente: ' + Edit2.Text;
Mail.Recipients.EMailAddresses := 'pedidos@pepito.com';
Mail.From.Address := Edit3.Text;
Mail.Body.AddStrings(Memo1.Lines);
TidAttachment.Create(Mail.MessageParts, Edit1.Text);
try
  try
    SMTP.Connect();
    SMTP.Send(Mail);
    MessageDlg('Los pedidos se enviaron con éxito.', mtInformation, [mbOk], 0);
    except on E:Exception do
      MessageDlg('No se pudo conectar con el servidor. Chequee su conexión...', mtError, [mbOk], 0);
    end;
  finally
    if SMTP.Connected then
      begin
        SMTP.Disconnect;
        Mail.Free;
      end
  end
end

Ahora bien, si yo en vez de poner
Código Delphi [-]
Mail.Recipients.EMailAddresses := 'pedidos@pepito.com';
lo cambio por una variable que ea del estilo
Código Delphi [-]
Mail.Recipients.EMailAddresses := Edit8.Text;
en donde esté la direccion a donde tiene que llegar el mail, me salta error, que no puede enviar el mail.
Será por eso de que no soporta Relay (no sé que es el Relay... :) ). Gracias a todos de nuevo por responder.

Enan0 27-10-2005 20:10:42

Cita:

Empezado por jachguate
Esto no necesariamente es cierto, depende generalmente de cómo esté configurado el servidor smtp (y si soporta el relay o no, que hay los que no lo hacen. :D).

Hasta luego.

;)

Si, Tenes razon, Igual no es para hacer un debate de esto, pero la gran mayoria de los server's smtp no lo soportan para evitar el correo anonimo y asi controlar el spam.. (pero como te dije.. tenes razon y no es motibo de debate)...
:p

jachguate 27-10-2005 20:13:04

Cita:

Empezado por pampitasnowman
Ahora bien, si yo en vez de poner
Código Delphi [-]
Mail.Recipients.EMailAddresses := 'pedidos@pepito.com';
lo cambio por una variable que ea del estilo
Código Delphi [-]
Mail.Recipients.EMailAddresses := Edit8.Text;
en donde esté la direccion a donde tiene que llegar el mail, me salta error, que no puede enviar el mail.

:eek: ¿qué clase de error salta? ¿con que mensaje?. No está de mas que te des una vuelta por aqui.

Hasta luego.

;)

Enan0 27-10-2005 20:26:15

Como te anteriormente.. (jachguate) lo mas probable es que no soporte RElay, Intenta cambiar el DNS (SMTP) como prueba por uno de yahoo (smtp.mail.yahoo.com) y ponete como usuario el nombre de usuario de una cuenta que soporte POP3 y SMTP, esto se configura dentro de la cuenta desde las opciones..
y el respectivo password. igual te Adjunto un ejemplo debajo....

Código Delphi [-]
  
   if SMTP.Connected then SMTP.Disconnect;
    SMTP.Host:=txtsmtphost.Text;
    SMTP.Port := strtoint(txtsmtpPort.text); //port por default 25
    SMTP.Username:=txtsmtpID.Text;
    SMTP.Password:=txtSmtpPSW.text;
    SMTP.AuthType:=atDefault;
    idMessage.Recipients.EMailAddresses:=trim(txtmail.text); // si buscas en el foro hay un funcion para validar los emials
   IdMessage.From.Name:=txtUserName.text +' ' + txtmail.text;
   IdMessage.Subject:=txtsubjet.text;
 IDmessage.body:=memo1.text;
   if not SMTP.Connected then SMTP.Connect;
   SMTP.Send(idmessage);
  ......

pampitasnowman 27-10-2005 22:26:55

Buenas! Perdón por la falta de datos del mail anterior, es cierto, no puse nada de lo que estaba usando. Les cuento que al final el error era de autenticación del SMTP, con el ejemplo que me mandaste de Yahoo!, corregí el que utilizaba de mi Hosting pago y funcionó perfecto.

Código Delphi [-]
SMTP.AuthenticationType := atLogin;

Tal vez les sirva este dato, pero el Yahoo! utiliza también el Port 578, porque a veces muchos ISP bloquean el 25.
Bueno, muchas gracias nuevamente por responder, y espero mejorar para la proxima en la redacción de los POST, saludos, Nacho.


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

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