PDA

Ver la Versión Completa : smtp


Ester
20-10-2003, 17:56:29
Muy buenas,

he leido en alguna parte que una forma fácil de enviar mails desde delphi es utilizando el componente TNMSMTP. Es eso cierto? De donde puedo sacar este componente? (Lo que yo necesito es que además de rellenar el mail lo envie automaticamente sin que el usuario ni se entere, es esto posible?)

Grácias y un saludo,

Ester

Alejandra
21-10-2003, 00:27:39
fijate en las demos que trae el delphi.

Saludos Alejandra

jachguate
21-10-2003, 01:33:44
Te recomiendo que utilices las Indy (http://www.nevrona.com/indy) para programar para internet. A partir de la versión 6 o 7, son los componentes incluidos en el mismo Delphi, contando siempre con soporte para Delphi 3 en adelante.

Allí mismo encontrarás demos que te aclararán como enviar un Email desde tu aplicación.

Hasta luego.

;)

Ester
28-10-2003, 13:34:11
Muy buenas,

he estado mirando la web de Indy pero no encuentro demos por ningun sitio, solo una lista de demos existentes pero no se como bajarmelas. Sabeis algun otro sitio donde pueda encontrar?


Grácias,

Ester

SnaKe
28-10-2003, 16:33:25
Los componentes Indy vienen con delphi 6 y 7 (solapas de componentes indy) y te lo puedes bajar e incorporar para otras versiones anteriores de delphi.

Si tienes D6 o 7 vete al directorio ($DELPHI)\Demos\Indy y allí lo tendrás.

En cuanto al componente TNMSMTP lo puedes encontrar en la solapa de componentes FastNet (creo que era así).

Un saludo.

naker
10-11-2003, 04:20:08
che, yo no tengo ese componente instalado! de donde lo puedo bajar??
cuando instale el delphi, hice la instalacion minima y no tengo esa solapa.
Como puedo hacer para instalarlo??
Desde ya, muchas gracias!
naker.-

jachguate
10-11-2003, 07:43:05
En mi mensaje anterior está la dirección... :confused: :confused:

naker
10-11-2003, 14:53:09
no, pero yo me referia al componente TNMSMTP :)

ViPer
26-11-2003, 20:02:10
El componente TNMSMTP viene con el Delphi a partir de la version 5, creo.

A ver ai alguien puede ayudarme a mí en este mismo tema:
He conseguido enviar mensajes con el TNMSMTP, pero solo a las direcciones que entren en el dominio del host que le indico,
por ejemplo para el host "mailhost.terra.es" solo puedo enviar correo a las direcciones como "midirec@terra.es", y no a "midirec@msn.com" por ejemplo

¿Es que falla el componente o es así de estricto? ¿Como puedo obtener el host de una direccion email determinada?

Gracias, espero que algun generoso programador conteste.
Un saludo.

jachguate
26-11-2003, 22:27:05
El host es tu servidor de correo. Es decir, el equipo que sirve la cuenta tuya.

Digamos, si tu cuenta es juan@miproveedor.com, regularmente mi proveedor te dará una dirección. Puede ser un ip, o algo como mail.miproveedor.com, o smtp.miproveedor.com. No hay un estandar para ello.

Luego, el que desde tu cuenta podas enviar mensajes a cualquier dirección o solo a direcciones del mismo dominio, depende de las capacidades y la configuración de ese servidor. Lo normal es que si podas enviar correo a cualquier@lado.com

hasta luego.

;)

ViPer
27-11-2003, 18:17:42
Gracias. :)
Aunque entonces no sé cómo crear un proceso de envio de correo seguro y para todos los servidores...
supongo que alguien lo habrá hecho alguna vez... :(

Gracias de nuevo. Ciao.

naker
28-11-2003, 01:41:32
che, yo logre hacerlo andar para cualquier dire de mail. Tal vez sea el server de smtp que le pusiste.
Aca te paso mi codigo:

NMSMTP1.Port:=25;
NMSMTP1.Host:='smtp.hotpop.com';
NMSMTP1.UserID:= 'nachomezzadra@hotpop.com' ;
if not (NMSMTP1.Connected) then
NMSMTP1.Connect;
NMSMTP1.PostMessage.FromAddress := 'tu_dir_de_mail@server.com';
NMSMTP1.PostMessage.FromName := 'Tu nombre';
NMSMTP1.PostMessage.ToAddress.Add(Form1.Edit1.Text);
NMSMTP1.PostMessage.Attachments.Text := 'mi_archivo.txt';
NMSMTP1.PostMessage.Body.Text:=memo1.Text;
NMSMTP1.SendMail;
NMSMTP1.Disconnect;

Saludos y espero q te sirva!
naker.-

ViPer
28-11-2003, 18:47:03
Gracias naker, pero la unica diferencia con el mio es que le pasas el UserID, y lo he intentado asi y va igual. Mirad, aqui teneis la funcion completa, con copiar y pegar se puede probar y decirme si funciona.

procedure TForm1.ENVIAR_CORREO(WHOST: String; WPORT: Integer; WDIRREM, WDIRDEST, WASUN, WMEN: String);
begin
if InetIsOffline(0) then
begin
ShowMessage('No conectado a Internet');
Exit;
end;
////
with NMSMTP1 do
begin
// Host y Puerto de correo ...
Host:=WHOST;
Port:=25;
UserID:='usuario@terra.es';
// conectando ...
try
Memo1.Lines.Add('Conectando con '+ WHOST +', puerto '+ EPort.Text);
Connect;
except
Memo1.Lines.Add('Fallo en la conexion con el servidor SMTP.');
Exit;
end;
Memo1.Lines.Add('Componiendo mail ...');
// borra parametros por defecto ...
ClearParameters();
// Dirección origen ...
PostMessage.FromAddress:=WDIRREM;
Memo1.Lines.Add('Direccion origen: '+ PostMessage.FromAddress);
// Dirección destino. Se pueden indicar varias ( TStringList ) ...
PostMessage.ToAddress.Add(WDIRDEST);
Memo1.Lines.Add('Dirección destino: '+ PostMessage.ToAddress.Text);
// Titulo del mail ...
PostMessage.Subject:=WASUN;
Memo1.Lines.Add('Subject: '+ PostMessage.Subject);
// Ficheros adjuntos. Se pueden indicar varios ( TStringList ) ...
PostMessage.Attachments.Add('jdd.txt');
Memo1.Lines.Add('Ficheros adjuntos: ' + PostMessage.Attachments.Text);
// Cuerpo del mail ...
PostMessage.Body.Clear;
PostMessage.Body.Text:=WMEN;
Memo1.Lines.Add('Añadiendo cuerpo del mail ...');
// Enviando mail ...
Memo1.Lines.Add(' ');
Memo1.Lines.Add( 'Enviando ... ');
SendMail;
Memo1.Lines.Add('Mail enviado.');
// Desconectando ...
Disconnect;
Memo1.Lines.Add('Desconectado');
end;
end;

Para la llamada:

ENVIAR_CORREO(EHost.Text, StrToInt(EPort.Text), EDirOrigen.Text, EDirDest.Text, EAsunto.Text, EMen.Text);



REPITO, funciona para los emails de terra, pero no para msn, por ejemplo, que me muestra el error "503 No Recipients Especified"



Muchas gracias de nuevo, sois los mejores.
Ciao.

naker
29-11-2003, 01:08:03
mmmm la verdad es q no sabria que decirte...
intentaste con otro host??
en HotPOP (http://www.hotpop.com) te ofrecen email gratuito. Yo tengo mi cuenta ahi, y con esa cuenta funciona sin problemas.
Intenta sacarte una cuenta ahi, y despues nos contas como te fue.
Saludos,
naker.-

Alejandra
01-12-2003, 11:54:50
Hola Gente!!

queria compartir mi experiencia con smtp con ustedes.. no es mucha pero... tal vez sea de utilidad :)

haciendo un desarrollo me tope con una compania que utilizaba el Exchange como servidor de mail.
El tema es que ellos solo tenian habilitado el servicio de SMTP para uso interno , es decir solo mails de una determianda extension , por ejemplo @miCompania
Esta caracteristica es algo que se configura, es decir, tu proveedor puede decidir con quien/es podes contactarte via email

De acuerdo a lo uqe vengo siguiendo en los mensajes , es algo muy similar a lo uqe mu sucedio en este caso.

Saludos, y SUERTE!!!

Nadie
01-12-2003, 14:55:42
yo hice algo con smtp pero con tidtcp (componente indy)mandando los comandos de telnet conectandose directamente al mx (mail exchange) y poniendo el mail que queria como sender, el mail no se enviaba, directamente se escribia en el servidor

bueno, si necestian algo de ayuda chiflen

ViPer
01-12-2003, 19:11:46
Oye naker... hice lo que me dijiste, registre una cuenta nueva en HotPOP y cuando probe el programa puse Host:=smtp.hotpop.com y tal, conecto bien, como siempre, pero en el SendMail me da el error "554 error:no valid recipients"... lo mismo
ejecutaste el procedure que puse? funciona bien?

Respecto a lo que comenta alejandra, podria haber dicho como se puede modificar esa configuracion, supongo que habra que ponerse en contacto con el servidor...

Un saludo.

Nadie
01-12-2003, 19:43:37
http://www.greenend.org.uk/rjk/2000/05/21/smtp-replies.html
ese error te lo tira despues del data cuando pusiste mal la sintaxis del mail, aca te copio un ejemplo hecho con telnet en yahoo
data
354 go ahead
subject: probando
to:error
from:nose
holaaaaaaaa
.
554 delivery error: dd This user doesn't have a yahoo.com.ar account (miranda@ya
hoo.com.ar) [-5] - mta112.mail.scd.yahoo.com
si te fijas en el to y en el from puse palabras que no son mail y el error lo tira porque no es un email valido, es el header del email

ViPer
02-12-2003, 18:47:27
Siento parecer pesado, pero he comprobado lo de las direcciones TO y FROM y sigue igual. ¿Alguien ha ejecutado mi codigo?

FUNCIONA cuando:
Host: mailhost.terra.es
Direcc Dest: @terra

NO FUNCIONA cuando:
Host: mailhost.terra.es
Direcc Dest: @msn

y TAMPOCO FUNCIONA cuando:
Host: cualquiera que no sea terra! (smtp.HotPOP.com)

Es muy extraño, debe de ser algo de la configuracion del servidor, como comento Alejandra.

Gracias por la ayuda. Un saludo

Nadie
02-12-2003, 20:01:21
Es obvio que te pasa eso porque no es openrelay, se puede hacer igual con un truquito medio tonto, pero no voy a escribirlo porque esto se puede usar para spam, no se si es tu caso

Nadie
02-12-2003, 20:02:31
ah, me olvidaba, el caso que planteo alejandra no se aplica a lo que te pasa, lo que queres hacer anda solo si es open relay

ViPer
04-12-2003, 19:05:03
Te he mandado un correo personal, gracias.
¿Que significa open relay?

Un saludo.

Nadie
05-12-2003, 01:38:03
ViPer comentó:
Te he mandado un correo personal, gracias.
¿Que significa open relay?

Un saludo.

open relay son los mails con smtp abierto para poder mandar mails aunque no pertenezcan a ese servidor, por lo general son smtp mal configurados, hay pocos pero hay
si lo del mail fue para mi en un rato lo reviso recien llego a casa

saludos
ariel