Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
¿Cómo se reparte la carga del envío de correo electrónico?

Hola,

Me ha surgido una duda sobre el envío de correo electrónico desde PHP en particular, pero, también en general, desde cualquier lenguaje, utilizando el protocolo oportuno y las funciones o clases que se utilizen en cada caso.

Supongamos una aplicación que publica noticias. Los usuarios pueden leer estas noticias y, si quieren, pueden enviar una nota sobre las mismas a la dirección de correo electrónico de algún conocido.

En PHP contamos (entre otras) con la función "mail" que se encarga de enviar correos electrónicos desde el Servidor SMTP oportuno. Pues bien, me he percatado de que uno puede enviar más de un correo al mismo tiempo, sencillamente, separando las direcciones por comas.

En realidad esto lo sabía hace tiempo, pero, ha sido ahora cuando me lo he planteado del siguiente modo: ¿cuesta más enviar un correo a una dirección que a diez, por poner un caso? La función "mail" se ejecuta una sola vez en todo caso, entonces, ¿quién se encarga de enviar los diez correos en lugar de uno solo?

Concretando un poco más mi duda, ¿significa una mayor carga para el Servidor de la aplicación el que se envíe correo a diez destinatarios a la vez? ¿El Servidor SMTP tendrá que hacer lo mismo diez veces o solamente una? Pero el correo tendrá que llegar a diez destinatarios, no a uno, por poner por caso, ¿eso es más costoso? ¿en qué sentido? ¿quién se divide ese costo y la carga que representa, si es que es tal carga?

Bueno. No sé si me expliqué más o menos. Espero que me entendieran, pero, ya saben que estoy por aquí si es que necesitan que les explicite algo y aun algos más sobre mi duda. En todo caso muchas gracias como siempre por estar ahí y por las respuestas que sabéis y podéis y dáis a cuantas dudas se plantean en estos Foros.

PD. Todo esto ha surgido porque me he dado cuenta de que cierta función que utilizo para validar direcciones de correo electrónico funciona... regular. ¿Porqué? Porque es capaz de distinguir entre una dirección de correo sintácticamente válida de una que no lo es, pero, en caso de comprobarse una "entrada" tal que esta:

Código:
pepe@pepe.com,juan@juan.com
Resulta que la función valida, es decir, para la función "el correo" resulta válido sintácticamente. Pues bien, antes de "retocar" en lo necesario la función para que no permita más de una dirección de correo (otra cosa será cómo hacer esto) lo cierto es que me pregunto si merece la pena, es decir, si no será acaso igual de costoso enviar un correo que tres, por poner un caso. Lo que sí quisiera hacer es delimitar la cantidad de caracteres de la entrada de usuario, puesto que una cosa es enviar cinco correo y otra quinientos... lo primero podría considerarse "normal", lo segundo creo que no.

Por cierto, la función que refiero, ahora mismo queda de este modo:

Código PHP:
function Email($entrada)
{
  if(!
Validar::Longitud($entrada300))
    return 
false;

  
$pattern '/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@';
  
$pattern .= '([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]{2,4})/';
  return 
preg_match($pattern$entrada);

Es decir, no se permite una entrada de más de 300 caracteres y dicha entrada tiene que ser una dirección de correo electrónico (¿una?) válida sintácticamente.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 22-10-2006 a las 15:38:41.
Responder Con Cita
  #2  
Antiguo 05-04-2008
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 17
gabrielflowers Va por buen camino
interesante pregunta dec, pero si tu pregunta estuviera orientado a validar la sintaxis del correo (o de los correos, mas de uno, separados por comas), pues la solucion seria elaborar una expresion regular un poco mas trabajada pues no?, lo demas que planteas es interesante sin duda, quizas algun experto colabore en dar respuestas a estas dudas
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"
Responder Con Cita
  #3  
Antiguo 05-04-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
En cuanto a la repartición de carga no tengo gran idea. Supongo que si mandas a diez direcciones, el servidor SMTP tiene que mandarlo diez veces, si no, ¿quién se encargaría de repartirlo a cada dirección?

De todas formas, a no ser que explícitamente quieras mandar a más de una dirección, yo optaría por ajustar tu función validadora. Tal como la tienes me parece que acepta demasiadas cosas, por ejemplo:

pedro@el.lobo..y.tu.mama.tambien..

porque la parte en negritas satisface al patrón. Creo que te has olvidado de ponerle un $ al final tal como le pusiste ^ al comienzo. Tal como está, una vez que tienes una parte correcta (pedro@el.lobo), después puede haber cualquier cosa, deja tú las comas, cualquier cosa.

Entonces, más que restringir el número de caracteres, ajusta para que restrinja a una sóla dirección, aunque sea de 500 caracteres.

Otra cosa es que no sé porqué usas {2,4}. Desconozco si hay una longitud mínima pero desde luego no creo que haya una máxima, mucho menos 4.

Bye

Última edición por keyboy fecha: 05-04-2008 a las 19:03:33.
Responder Con Cita
  #4  
Antiguo 05-04-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Después de casi dos años revivió este hilo. Respecto de la expresión regular keyboy, bueno, tengo que decir que no la hice yo. Me limité a copiarla de algún sitio, probablemente. Igual que esta que se usa en esta función, que es la que vengo utilizando para validar direcciones de correo actualmente:

Código PHP:
function EmailAddress($input){
  
$pattern "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$/i";
  return 
preg_match($pattern$input);

Me doy cuenta de que ahí ya se tiene en cuenta el "final" ($) al que haces referencia. Veo, sin embargo, que sigue usándose un "{2,6}" para limitar el rango de caracteres del, cómo se llama... el sufijo del dominio, ".com", por ejemplo. Ignoro ahora mismo si, efectivamente, este rango puede ser limitado. Igual que antes, esta expresión regular debí cogerla "de por ahí"... (salud para su autor).

Supongo que en esto también habría que llegar a un compromiso. Aunque, si de verdad existiera una "sintaxis" para las direcciones de correo... igual podría lograrse la expresión regular perfecta. Si esto es así, que no lo pongo en duda, me pregunto porqué hay tantas entonces...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 05-04-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
¡Vaya! Yo sólo me fije en la fecha del último mensaje

Pero eso pasa por no poner aquí la forma en que lo habías solucionado

Bye
Responder Con Cita
  #6  
Antiguo 05-04-2008
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
¡Vaya! Yo sólo me fije en la fecha del último mensaje

Pero eso pasa por no poner aquí la forma en que lo habías solucionado

Bye
Para David
Y que un moderador vea si lo expulsa definitivamente del club

Saludos
Responder Con Cita
  #7  
Antiguo 13-04-2008
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Cita:
Empezado por D-MO Ver Mensaje
Y que un moderador vea si lo expulsa definitivamente del club
Bueno lo estamos votando, ya veremos el resultado

Ya está todo tratado sobre el hilo exceptuando la carga del servidor. Para el SMTP es lo mismo que se ejecuten 500 veces la función mail() o que la función mail() contenga 500 recipientes, él se limitará a transportar las 500 peticiones llegen desde una u otra forma, así pues lo que habría que ver, es el código de la función mail() para saber si 500 instancias cargan por igual a 500 recipientes.

En cualquier caso puedo asegurarte que ese volumen es insignificante para cualquier servidor.
__________________
Saludos
Emilio
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como envío correo desde Excel sin que me pida confirmación? luisdevis Varios 3 11-10-2006 23:18:18
Como envio un correo con archivos adjuntos Alejandro73 Internet 4 08-04-2006 01:09:49
¿Cómo vaciar los datos adjuntos del envio de un correo? D@byt Internet 1 01-12-2005 13:24:43
¿cómo accedo a mi cuenta de correo eléctrónico para leer mis mensajes? nuri Internet 1 28-04-2005 17:20:01
Envio errores (Delphi4) a través del correo electrónico Jose Manuel Varios 12 24-07-2003 15:45:09


La franja horaria es GMT +2. Ahora son las 07:38:21.


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
Copyright 1996-2007 Club Delphi