jueves, 26 de marzo de 2009

Protocolo SMTP de transporte de correo

SMTP = Simple Mail Transfer Protocol (Ingles) = Protocolo Simple de Transferencia de Correo (Español)


Características



  • Es un protocolo de la capa de aplicación.

  • Es un protocolo ASCII sencillo .

  • Se basea en el modelo cliente servidor (Tamaño máximo permitido 1000 caracteres).

  • Normalmente establece la conexión TCP con el puerto 25.


1) Envío de correos


En esta sección se describe como funciona el servicio SMTP, para diferenciarlo del servio de envío POP3. ¿Qué es SMTP? ¿Es un protocolo usado para enviar el correo? NO. El SMTP no es un protocolo sencillo como lo es POP3, en el que un cliente conecta con un servidor para hacer una cosa, y una cosa solamente (en el caso de POP3, lo que hace es recibir el correo). El SMTP es un servicio complejo de correo a través de servidores, usando un protocolo estándar para enviar y para recibir el correo. Puede sonar extraño, pero un servidor del SMTP recibe y envía el correo, y los correos que le llegan los envía de la misma manera que recibe, es decir, con el SMTP.


1.1) Una analogía con nuestro buzón de correos


El servicio POP3 se puede asimilar a nuestro buzón de correos de nuestra casa, abriéndolo y tomando el correo que está adentro.


La complejidad implicada es muy diferente en los dos casos, y la semejanza es escasa.


1.2) Un ejemplo práctico


Vamos presentar un ejemplo simple, siendo más profundos en los detalles del SMTP, y así se entenderá mejor. Si le han convencido los ejemplos anteriores usted puede saltar el ejemplo de Alicia y Carlos.


Nosotros tenemos dos personas en nuestro ejemplo:




Alicia


Tiene una dirección de correo alicia@foo.com y es un cliente del Internet foo.com, así que ella utiliza como dominio pop.foo.com mientras que un servidor POP3 le sirve para descargar el correo y smtp.foo.com le sirve como servidor del SMTP para enviarlo; ambos son servicios ofrecidos por su suministrador de Internet foo.com.


Carlos


Tiene una dirección de correo carlos@baz.com y es un cliente del suministrador de internet baz.com, así que él utiliza el dominio pop.baz.com, mientras que un servidor POP3 le sirve para descargar el correo, y SMTP.baz.com como servidor del SMTP para enviarlo, semejantemente a Alicia.



Vamos ver qué sucede cuando Alicia envía el correo a Carlos y consigue una contestación después


Alicia escribe el email usando como destinatario carlos@baz.com y lo envía al servidor SMTP smtp.foo.com de su suministrador de Internet (el ISP). El servidor recibe el email de Alicia y se da cuenta que está destinado a un usuario de baz.com (usuario que no le pertenece); por lo tanto, lo remite al servidor del SMTP de baz.com, que es smtp.baz.com. Este último (baz.com) se da cuenta que es para un usuario de baz.com (su propio dominio) así que no lo remite a ningún otro servidor del SMTP sino que lo archiva en la bandeja de entrada de Carlos. Carlos recibe el correo de Alicia usando el servidor POP3 pop.baz.com y escribe la respuesta a Alicia con smtp.baz.com; el último lo remite a smtp.foo.com que de la misma forma que antes, entiende que es para uno de sus usuarios locales y lo archiva en la bandeja de entrada de Alicia, permitiendo que Alicia lo lea usando el servicio POP3 pop.foo.com.



<?php

//error_reporting(E_ALL);

error_reporting(E_STRICT);

date_default_timezone_set('America/Toronto');

include("class.phpmailer.php");

//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = $mail->getFile('contents.html');

$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP();

$mail->SMTPAuth   = true;                  // enable SMTP authentication

$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier

$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server

$mail->Port       = 465;                   // set the SMTP port for the GMAIL server

$mail->Username   = "yourusername@gmail.com";  // GMAIL username

$mail->Password   = "yourpassword";            // GMAIL password

$mail->AddReplyTo("yourusername@gmail.com","First Last");

$mail->From       = "name@yourdomain.com";

$mail->FromName   = "First Last";

$mail->Subject    = "PHPMailer Test Subject via gmail";

//$mail->Body       = "Hi,<br>This is the HTML BODY<br>";                      //HTML Body

$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->WordWrap   = 50; // set word wrap

$mail->MsgHTML($body);

$mail->AddAddress("whoto@otherdomain.com", "John Doe");

$mail->AddAttachment("images/phpmailer.gif");             // attachment

$mail->IsHTML(true); // send as HTML

if(!$mail->Send()) {

  echo "Mailer Error: " . $mail->ErrorInfo;

} else {

  echo "Message sent!";

}

?>


BIBLIOGRAFÍA

[1] FreePops. [http://www.freepops.org/es/smtp.shtml] 26-III-2009

[2] Simple Thoughts [http://blog.taragana.com/index.php/archive/how-to-send-mails-using-smtp-server-in-php/es/] 26-III-2009


martes, 24 de marzo de 2009

Ubicar un sitio de Cochabamba con Google Maps

De esta forma se puede ubicar la dirección exacta de un domicilio dentro de la ciudad de Cochabamba.Ir al Sitio

Pegar enlace en mensaje de correo electrónico o mensaje instantáneo
Pegar HTML para insertar en sitio web
(Solo es necesario quedarse con lo que se encuentra dentro la bandera iframe)




lunes, 23 de marzo de 2009

Casos de uso

Antes de diseñar el sistema e implementar el software se deberá contemplar lo siguiente:

·         Casos de Uso.

·         Modelo conceptual.

En los casos de uso deberán estar todos los requerimientos del sistema tanto funcional como no funcional. Además si es necesario se deberá incluir figuras del diseño de las interfaces de usuario.

Figura 1

Ejemplo de diagrama de caso de uso


Fuente: [http://www.ingenierosoftware.com/analisisydiseno/casosdeuso.php] 21-03-2009

Recomendaciones: Evitar relaciones de inclusión, exclusión y generalización.

Cada caso de uso se deberá resumir de la siguiente manera:

Tabla 1

Ejemplo de un caso de uso

Nombre:

Crear mensaje foro

Autor:

Joaquin Gracia

Fecha:

24/08/2003

Descripción:
      Permite crear un mensaje en el foro de discusión.

Actores:
      Usuario de Internet logeado.

Precondiciones:
      El usuario debe haberse logeado en el sistema.

Flujo Normal:

1.     El actor pulsa sobre el botón para crear un nuevo mensaje.

2.     El sistema muestra una caja de texto para introducir el título del mensaje y una zona de mayor tamaño para introducir el cuerpo del mensaje.

3.     El actor introduce el título del mensaje y el cuerpo del mismo.

4.     El sistema comprueba la validez de los datos y los almacena.

Flujo Alternativo:

4.     El sistema comprueba la validez de los datos, si los datos no son correctos, se avisa al actor de ello permitiéndole que los corrija

Poscondiciones:
      El mensaje ha sido almacenado en el sistema.

Fuente: [http://www.ingenierosoftware.com/analisisydiseno/casosdeuso.php] 21-03-2009

domingo, 22 de marzo de 2009

PHP Orientado a Objetos

Programar en PHP puede llegar a ser mucho más fácil utilizando la programacion orientada a objetos. En este sitio webhttp://www.phpobjectgenerator.com uste puede colocar el nombre de las clases de su modelo, los atributos de cada clase y sus relaciones y genera el codigo en php de la clase. Algo muy importante es que también le genera la base de datos y como si fuera poco obtiene el codigo de un instalador para el sistema. Es muy fácil aprenderlo a utilizar y le ahorrora bastante tiempo. Si deseas bajarte instaladores para programar en php te recomiendo este sitio www.en.wampserver.com ya que podras tener al mismo tiempo Apache, MySQL, PHP para windows.

//Para guardar un objeto simplemente se tiene que hacer lo siguiente
$book = new Book() ; //para crear una instancia de Book
$book -> title = " Mi vida en la infancia" ;
$author = new Author () ; //crea un padre para el objeto Book
$author -> name = ‘Arturo Prudencio’ ;
$author -> AddBook($book) ;
$author -> Save( t rue) ; //Guarda ambos Author y Book
//Nota: Save(true) is lo mismo que Save():

//Para guardar solamente un objeto haga lo siguiente:
$book = new Book() ; //crea una instancia de libro
$book -> title = " Mi vida en la infancia" ;
$author = new Author () ; //crea un padre para la instancia Book
$author -> name = ‘Arturo Prudencio’ ;
$author -> AddBook($book) ;
$author -> Save(false) ; //Solo guarda el objeto de Author
//Note: Save(false) is diferente que Save():