hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
25 de Julio de 2008, 02:06:32
Noticias: Te gusta el nuevo diseño?
Opina al respecto en:
Para ver este enlace Registrate o Inicia Sesion
Este Tema

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  Php (Moderador: shevchenko)
| | | |-+  Motor SMTP en php
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Motor SMTP en php  (Leído 1568 veces)
Punk-Rock
Visitante
« : 24 de Abril de 2006, 01:02:55 »

Weno, me pregunto komo se crea un motor SMTP en php?Huh alguien me puede ayudar en algo?Huh(sisisi, es para inkorporar a un programa en VB, ya ke yo de php NPI xD xD).

Salu2

En línea
vart001
Administrador
*****
Desconectado Desconectado

Mensajes: 1,558


El Mero, mero!


Ver Perfil WWW
« Respuesta #1 : 25 de Abril de 2006, 04:56:24 »

Motor SMTP en php?
pa mandar mails a eso te refieres?
En línea

root from cph


Para ver este enlace Registrate o Inicia Sesion
Hackear hotmail aqui

Punk-Rock
Visitante
« Respuesta #2 : 26 de Abril de 2006, 11:52:07 »

Yes, mails + Archivo si puede ser..... Tongue Tongue Tongue

Salu2

Hendrix

En línea
vart001
Administrador
*****
Desconectado Desconectado

Mensajes: 1,558


El Mero, mero!


Ver Perfil WWW
« Respuesta #3 : 26 de Abril de 2006, 12:13:34 »

Se supone que es para emviar mail con el SMTP, pero la verdad no lo e probado y no creo que sirva pa archivos aunque podria servir pa darte una idea  cool
Código:
<?
/*
smtp PHP Class
Copyright (C) 2006 Nic Stevens.
-----------------------------------------------------------------------------
Send a message via SMTP with optional LOGIN authorization.

Constructor:
   new smtp(<hostname>, // string: hostname of mail server
            <port>, // integer: port of smtp server on host, usually 25
    <from>, // address message is from
    <recip>, // string or array: list of recipients
    <headers>, // headers to be sent with message. (HINT = put
    // subject here)
   <auth>, // hash of auth data ('user' => user,
    // 'pass' = password)
   <message data>// text of message to be sent.
   
     Throws Exception on error.
*/     
define('au_st_auth',0);
define('au_st_user',1);
define('au_st_pass',2);
define('au_st_done',3);

define('sm_st_helo',0);
define('sm_st_auth',1);
define('sm_st_mfrom',2);
define('sm_st_rcpto',3);
define('sm_st_data',4);
define('sm_st_cleanup',5);

require_once('sock.php');

class smtp extends sock {
    var $errors;
    var $headers;
    var $data;
    var $host;
    var $state;
    var $recip;
    var $from;
    var $user;
    var $pass;
   
    function __construct($server, $port = -1, $from = "", $recip = "", $headers = "", $authdata = "", $data = "") {
$this->errors = array();
if($port == -1)
  $port = 25;
$cdata = array('address' => $server,
       'port' => $port);
try {
    parent::__construct($cdata);
} catch(Exception $e) {
    throw($e);
}
$this->get_data($junkdata);
$this->from = $from;
$this->recip = $recip;
$this->headers = $headers;
$this->authdata = $authdata;
$this->data = $data;

if($this->from == "" || $this->recip == "" || $this->data == "") {
    ob_start();
    print_r($this);
    $xxx = ob_get_contents();
    ob_end_clean();
    throw new Exception("! NOT ENOUGH INFO TO BUILD MESSAGE: OBJ Data: $xxx\n");
}
$state = sm_st_helo;
while($state <= sm_st_cleanup) {
    $prevstate = $state;
    $state = $this->sendMessage($state);
    if($state === false) {
$x = $this->errors[count($this->errors)-1];
throw new exception($x['text'],$x['code']);
    }
}
    }
    function sendMessage($state) {
switch($state) {
case sm_st_helo:
    if($this->helo())
      break;
    return false;
case sm_st_auth:
    if(is_array($this->authdata)) {
$this->user = $this->authdata['user'];
$this->pass = $this->authdata['pass'];
if($this->auth())
  break;
return false;
    }
    break;
case sm_st_mfrom:
    if($this->mailfrom())
      break;
    return false;
case sm_st_rcpto:
    if($this->rcpto())
      break;
    return false;
case sm_st_data:
    if($this->send_msgdata())
      break;
    return false;
case sm_st_cleanup:
    $this->cleanup();
    break;
default:
    $msg="fsm: Unknown state $state";
    $this->errors[] = array('code' => -1, 'text' => $msg);
    return false;
}
$state ++ ;
return $state;
    }
    function helo() {
if(!isset($host) || $host == "") {
    $host = exec('hostname');
}
$this->send_data("HELO $host\n");
if($this->get_data($data)) {
    list($code,$text) = explode(' ',trim($data),2);
    if($code > 250) {
$this->errors[] = array('code' => $code, 'text' => $text);
return false;
    }
} else {
    $this->errors[] = array('code' => -1, 'text' => 'cannot send command');
    return false;
}
return true;
    }
    function rcpto() {
if(!is_array($this->recip)) {
    $recip = array();
    foreach(explode(',',$this->recip) as $r)
      $recip[] = trim($r);
    $this->recip = $recip;
}
foreach($this->recip as $r) {
    if($this->send_data("RCPT TO: $r\n")) {
if($this->get_data($data)) {
    list($code,$text) = explode(' ',trim($data),2);
    if($code != 250) {
$this->errors[] = array('code' => $code, 'text' => $text);
return false;
    }
} else {
    $this->errors[] = array('code' => -1, 'text' => 'cannot send command');
    return false;
}
    }
}
return true;
    }
    function mailfrom() {
if($this->send_data("MAIL FROM: $this->from\n")) {
    if(!$this->get_data($data)) {
$this->errors[] = array('code' => -1, 'text' => 'cannot read command response');
return false;
    }
    list($code,$text) = explode(' ',trim($data),2);
    if($code > 250) {
$this->errors[] = array('code' => $code, 'text' => $text);
return false;
    }
} else {
    $this->errors[] = array('code' => -1, 'text' => 'cannot send command');
    return false;
}
return true;
    }
    /*
     * auth is a mini-finite-state-machine which sends the AUTH LOGIN commands
     * in succession until the appropriate state (au_st_done) is reached.
     */
    function auth() {
$codes = array(334,334,235,0);
$state = au_st_auth;
while($state != au_st_done) {
    switch($state) {
     case au_st_auth:
$r = $this->send_data("AUTH LOGIN\n");
break;
     case au_st_user:
$r = $this->send_data(base64_encode($this->user) . "\n");
break;
     case au_st_pass:
$r = $this->send_data(base64_encode($this->pass) . "\n");
break;
     case au_st_done:
break;
    }
    if(!$r) {
$this->errors[] = array('code' => -1, 'text' => 'cannot send command');
return false;
    }
    if(!$this->get_data($data)) {
$this->errors[] = array('code' => -1, 'text' => 'cannot read command response');
return false;
    }
    list($code,$text) = explode(' ',trim($data),2);
    if($code != $codes[$state]) {
$this->errors[] = array('code' => $code, 'text' => $text . "(expected code: " . $codes[$state] . ")");
return false;
    }
    $state ++;
}
return true;
    }
    function send_msgdata() {
if(is_array($this->headers)) {
    $headers = "";
    foreach($this->headers as $h)
      $headers .= str_replace("\n.\n","\n..\n",trim($h)) . "\n"; // Transparency
} else
  $headers = str_replace("\n.\n","\n..\n",trim($this->headers));

$data = str_replace("\n.\n","\n..\n",$this->data); // Transparency
if(!$this->send_data("DATA\n")) {
    $this->errors[] = array('code' => -1,'text' => 'Cannot send command');
    return false;
}
if(!$this->get_data($data)) {
    $this->errors[] = array('code' => -1,'text' => 'Cannot get command response');
    return false;
}
list($code,$text) = explode(' ',trim($data),2);
if($code != 354) {
    $this->errors[] = array('code' => $code, 'text' => $text);
    return false;
}
if($this->send_data($headers . "\n\n" . $this->data . "\n.\n")) {
    if(!$this->get_data($data)) {
$this->errors[] = array('code' => -1,'text' => 'Cannot get command response');
return false;
    }
    list($code,$text) = explode(' ',trim($data),2);
    if($code != 250) {
$this->errors[] = array('code' => $code, 'text' => $text);
return false;
    }
    return true;
}
$this->errors[] = array('code' => -1,'text' => 'Cannot get command response');
return false;
    }
    function cleanup() {
$this->send_data("QUIT\n");
$this->disconnect();
    }
}
?>


aaa me encontre un texto.. para usar SMTP con php.. la verdad no se mucho de esto ya que pues nunca lo e necesitado..
script usando sockets y SMTP

Comenzaremos por mostrar como se usa la función fsockopen(), porque la vamos a necesitar antes de conectarnos al servidor SMTP. Esta función toma dos argumenstos más tres opcionales, pero a nosotros solo nos interesan los dos obligatorios. El primero es la IP o nombre del servidor al que conectar, y el segundo es el puerto. Así, nosotros, usaremos el puerto 25, y, como servidor, uno que conozcamos que funcione.

Así pues, primero vamos a ver un ejemplo de como abrir un socket, y luego encapsularemos en una clase las funciones que vamos a necesitar en la clase a crear. En este sencillo ejemplo, solo vamos a conectar a un servidor de correo y decirle "Hola", en su lenguaje. El código es como sigue:
<? //Abrimos la conexión $Conexion = fsockopen("programacion.c om","25"); //Sacamos el contenido de lo que nos devuelve el servidor antes de seguir $str_recibe = fgets($Conexion,256); echo "
"; print_r($str_recibe); echo "
"; //Esta es la cadena que dice "Hola". Fíjate en en rn final que marca //un "Enter", para confirmar el comando $str_hola = "EHLO programacion.c omrn"; //Le soltamos la cadena al socket if(!fputs($Conexion,$str_hola)) { echo "Imposible decirle "hola" al servidor."; exit; } else { $str_recibimos = fgets($Conexion,256); echo "
"; print_r($str_recibimos); echo "
"; } //Salimos de la sesión, primero diciendo "Adios" al servidor //y luego cerrando el socket con fclose() if(!fputs($Conexion,"QUITrn")) { echo "No se pudo salir de la sesión con el servidor SMTP"; exit; } else { fclose($Conexion); echo "Cerrado y terminado"; exit; } ?>

Como vemos, no es tan complicado como parece. A continuación vamos a mostrar una lista de comandos SMTP que nos serán imprescindible s a la hora de tratar con un servidor de correo. Asimismo, veremos los distintos códigos que nos puede devolver el servidor.
Comandos SMTP y respuestas del servidor

A continuación, muestro una lista de comandos SMTP junto con su significado.
Comando Significado
HELO    Hola sencillo. Es el modo más antiguo y seguro de decir "hola". Si el servidor es capaz de responder a él, soporta las funcionalidade s básicas que vamos a ver en este tutorial.
EHLO    Hola extendido. Es el modo de decirle hola al servidor más moderno. Si es capaz de responder, significa que posee muchas más características que si solo pudiese responder a HELO. Muchas de ellas son muy avanzadas y no las vamos a ver en este tutorial.
MAIL FROM: correo@dominio    Con este comando se especifica de quién proviene el correo a enviar. A menudo el dominio ha de ser uno válido, pues ciertos servidores comprueban la existencia del mismo, devolviendo un mensaje de error si no pueden ser identificados.
RCPT TO: correo@dominio    Con este comando se especifica el receptor (o receptores, pues el comando puede ser repetido tantas veces como receptores haya), del mensaje enviado. Es importante tener en cuenta que ciertos servidores poseen una tabla de dominios a los que pueden entregar el correo. Por ejemplo, mucha gente configura el servidor para que solo pueda admitir correo para la máquina, rechazando todas las otras direcciones cuyos registros DNS no se encuentren en la misma. Como regla general, es seguro usar el servidor de correo del dominio al cual pertenece el correo de la persona a la que va dirigida el mensaje.
DATArn (Subject: rn) rn.rn    Este comando, pese a su apariencia compleja, no lo es tanto en realidad. Primero va la palabra clave DATA, que indica al servidor de correo que se inicia la transferencia de los datos del correo en si. Tras esta sentencia, y, antes del correo, podemos incluir cabeceras, siendo la más común Subject: , para indicar el tema. Tras todo el mensaje, debe escribirse rn.rn . Si eso es. Un "Enter", seguido de un punto y otro "Enter". Así se le dice al servidor que el mensaje ha terminado. Una vez pulsemos el último "Enter", el mensaje será enviado a la cola de proceso, listo para su entrega.

Pues ya ves que no son tantos. En realidad solo cinco, para hacer el trabajo más básico. Con esto se pueden mandar e-mails en formato de texto simple, sin ficheros adjuntos. No es mucho, pero, para estar trabajando a este nivel, ya es.

A continuación, una lista de los códgos numéricos más usuales de un servidor SMTP.
Código Significado
502    No implementado. Es el error que devuelve cuando uno de los comandos no está implementado en el servidor. Por ejemplo, programacion.c om responde 502 a EHLO.
250    Todo correcto. El comando introducido ha funcionado correctamnte y la acción requerida ha sido realizada sin problemas. También es lo que devuelve el servidor cuando un mensaje ha sido enviado correctamente a la cola de proceso.
553    El Recipiente del mensaje (RCPT TO:), no está incluido en la lista de dominios a los que el servidor esté configurado para entregar el correo.
354    Sigue adelante enviando el mensaje. Esto es lo que devuelve el servidor tras introducirle correctamente la palabra DATA.
221    Significa "Adios" en la jerga SMTP

Y, para demostrar que todo lo anterior es cierto, aquí está la transcripción de mi sesión telnet con el servidor de programacion.c om

220 us-8.34web.com ESMTP EHLO programacion.c om 502 unimplemented (#5.5.1) HELO programacion.c om 250 us-8.34web.com MAIL FROM:flipis@flipis.net 250 ok RCPT TO:multivac@internautas.org 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) RCPT TO:info@programacion.com 250 ok DATA 354 go ahead Subject: Esto es una prueba del webmaster de la seccion de php fLIPIS Este es el mensaje de prueba . 250 ok 1033728059 qp 1944 quit 221 Goodbye [
« Última modificación: 26 de Abril de 2006, 12:16:39 por vart001 » En línea

root from cph


Para ver este enlace Registrate o Inicia Sesion
Hackear hotmail aqui

Punk-Rock
Visitante
« Respuesta #4 : 26 de Abril de 2006, 12:17:18 »

jejejeje gracias por la Info..... Wink Wink Wink Wink

Salu2 y gracias por molestarte en darme la info....

En línea
vart001
Administrador
*****
Desconectado Desconectado

Mensajes: 1,558


El Mero, mero!


Ver Perfil WWW
« Respuesta #5 : 28 de Abril de 2006, 02:15:35 »

oye _Hendrix_ pero que onda..  rulo o no rulo?
esque me da weva probrar  Embarrassed xDDDDD
En línea

root from cph


Para ver este enlace Registrate o Inicia Sesion
Hackear hotmail aqui

Punk-Rock
Visitante
« Respuesta #6 : 28 de Abril de 2006, 02:57:00 »

haber...una kosa, yo nunka use php...y ni se komo se kompila...lo puse en el blok de notas y lo guarde komo php...tengo ke hacer esto, no?Huh

Si es asi lo voy a probar....si me tengo ke deskargar algun programa adicional mejor lo ago en VB..xD xD

Salu2

En línea
reydelmundo11
NZ1
*
Desconectado Desconectado

Mensajes: 43


Hackersclub


Ver Perfil WWW
« Respuesta #7 : 29 de Abril de 2006, 08:04:12 »

 Grin
Lo tienes que guardar en .php, si y subirlo a un servidor  web que tenga php.
Saludos   Cheesy
En línea

Obtenga su foro
Para ver este enlace Registrate o Inicia Sesion
smf
gratuito en:

Para ver este enlace Registrate o Inicia Sesion
vart001
Administrador
*****
Desconectado Desconectado

Mensajes: 1,558


El Mero, mero!


Ver Perfil WWW
« Respuesta #8 : 01 de Mayo de 2006, 08:00:42 »

es facil correr PHP.. bueno puedes subir a alguna cuenta en miarroba.com
o bajarte un programa que actua como servidor web. appserv te puede ayudar con eso.
si lo haces con VB pues ahi te pasas el code  cool
En línea

root from cph


Para ver este enlace Registrate o Inicia Sesion
Hackear hotmail aqui

Punk-Rock
Visitante
« Respuesta #9 : 04 de Mayo de 2006, 11:52:41 »

jejejeje  Wink Wink Wink si lo konsigo hacer en VB ya posteare el codigo....ahor a toka buskar...xD xD

Salu2 y gracias...

En línea
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online