Foros del Web » Programando para Internet » PHP »

PHP OO Enviar mail a usuario registrado en una db

Estas en el tema de Enviar mail a usuario registrado en una db en el foro de PHP en Foros del Web. Hola amigos, se que esta es una pregunta frecuente en el foro, pero no consegui encontrar la solucion a mi problema. Tengo un sistema de ...
  #1 (permalink)  
Antiguo 19/11/2011, 08:46
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Pregunta Enviar mail a usuario registrado en una db

Hola amigos, se que esta es una pregunta frecuente en el foro, pero no consegui encontrar la solucion a mi problema. Tengo un sistema de registro en php, todo anda perfecto pero quiero que cuando el usuario se registro, se le envie un mail con sus datos user y password. Lei por ahi que se usa la funcion mail() y probe algunos ejemplos sin exito.
Espero me puedan ayudar con esto :) de antemano muchas gracias!!!
//aca les muestro el codigo php de la pagina "register.php"

Código PHP:
<?php
$submit 
$_POST['submit'];

//form data
$fullname strip_tags($_POST['fullname']);
$adress strip_tags($_POST['adress']);
$postn strip_tags($_POST['postn']);
$ort strip_tags($_POST['ort']);
$personn strip_tags($_POST['personn']);
$email strip_tags($_POST['email']);
$username strip_tags($_POST['username']);

$password strip_tags($_POST['password']);
$repeatpassword strip_tags($_POST['repeatpassword']);
$date date("Y-m-d");

if (
$submit)
{
 
//chek for existens
 
if ($fullname&&$adress&&$postn&&$ort&&$personn&&$email&&$username&&$password&&$repeatpassword)
 {
    if (
$password==$repeatpassword)
    {
     
//chek char of username and fullname
     
        
if (strlen($username)>25||strlen($fullname)>25||strlen($postn)>6
        {
         echo 
"<foont color='red'>Length of username or fullname is too long!</font>";   
            } 
            
             else
             { 
               
//chekiando longitud de password
               
if (strlen($password)>25||strlen($password)<6)  
               {
                echo 
"<font color='red>Password must be between 6 and 25 characters</font>";   
                   }
                   else
                   {
                       
//register the user
                       
                    //open database
                    
                      
$connect mysql_connect("xxxxxx.se.mysql""xxxxxxx_se""nz9GMGDF");
                      
mysql_select_db("xxxxxxx_se"); //select database
                      
                        
$queryreg mysql_query("INSERT INTO `users`(id, fullname, adress, postn, ort, personn, email, username, password, date) VALUES ('','$fullname', '$adress', '$postn', '$ort', '$personn', '$email', '$username', '$password', '$date')");  
                        
                         die(
"You have been registred! <a href='index.php'>Return to log in page</a>"); 
                       }
                 
                 } 
        }
        else
         echo 
"<font color='red'>Your passwords do not match!</font>";
    
     }
     else
        echo 
"<font color='red'>Please fill in <b>all</b> fields!</font>";
}

?>
  #2 (permalink)  
Antiguo 19/11/2011, 08:53
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar mail a usuario registrado en una db

Para comenzar no le veo nada que tenga que ver con POO, en segunda, en el código que muestras no se ve nada de código para enviar el email y en tercera, no especificas cual es el problema, muestra el código que estas usando para enviar el email y el problema en concreto que tienes

Si buscas que te den código para usar mail() en el foro como en internet hay miles de sitios que tienen ejemplos y tutoriales
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 19/11/2011, 08:58
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Enviar mail a usuario registrado en una db

Primero que nada no veo la necesidad de ponerse rudo o brusco, lo del POO fue un simple error, me parece que tu actitud es un poco desconsiderada, si lees lo escribi en vez de solo criticar vas a ver que dice que vi unos ejemplos en el foro sin exito y que pedi ayuda, no criticas, muchas gracias por tu comprencion
  #4 (permalink)  
Antiguo 19/11/2011, 09:02
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Enviar mail a usuario registrado en una db

Cita:
Iniciado por Nemutagk Ver Mensaje
Para comenzar no le veo nada que tenga que ver con POO, en segunda, en el código que muestras no se ve nada de código para enviar el email y en tercera, no especificas cual es el problema, muestra el código que estas usando para enviar el email y el problema en concreto que tienes

Si buscas que te den código para usar mail() en el foro como en internet hay miles de sitios que tienen ejemplos y tutoriales
Ahora veo que que publique el codigo sin la parte de mail(), hubiese alcanzado con denotar eso
  #5 (permalink)  
Antiguo 19/11/2011, 09:03
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar mail a usuario registrado en una db

No estoy siendo mi mucho menos "brusco"...

Cita:
... vi unos ejemplos en el foro sin exito y que pedi ayuda ...
Como ya te lo dije, muestra el código que tienes para enviar el email y di el problema que tienes, sin mas datos no se te puede ayudar, no hay adivinos, en todo caso solo te diré que hagas un...

Código PHP:
Ver original
  1. $asunto = "Prueba de correo";
  2. $cuerpo = "Cuerpo del mensaje";
  3.  
  4. if (mail($para,$asunto,$cuerpo)) {
  5. echo 'envio existoso';
  6. }else {
  7. echo 'error al enviar';
  8. }

y en teoría debería funcionar...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 19/11/2011, 09:05
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Enviar mail a usuario registrado en una db

Cita:
Iniciado por Nemutagk Ver Mensaje
No estoy siendo mi mucho menos "brusco"...



Como ya te lo dije, muestra el código que tienes para enviar el email y di el problema que tienes, sin mas datos no se te puede ayudar, no hay adivinos, en todo caso solo te diré que hagas un...

Código PHP:
Ver original
  1. $asunto = "Prueba de correo";
  2. $cuerpo = "Cuerpo del mensaje";
  3.  
  4. if (mail($para,$de,$asunto,$cuerpo)) {
  5. echo 'envio existoso';
  6. }else {
  7. echo 'error al enviar';
  8. }

y en teoría debería funcionar...
Es el que probe, voy a tratar de hubicarlo en otro lado, talvez es mi error y muchas gracias por tu respuesta
  #7 (permalink)  
Antiguo 19/11/2011, 09:08
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar mail a usuario registrado en una db

Solo un dato, un error en el código que mostré, el parámetro $de no existe en la función mail(), tendría que ser dentro de las cabeceras...

Código PHP:
Ver original
  1. //Enviar email sencillo
  2. $asunto = "Prueba de correo";
  3. $cuerpo = "Cuerpo del mensaje";
  4.  
  5. if (mail($para,$asunto,$cuerpo)) {
  6. echo 'envio existoso';
  7. }else {
  8. echo 'error al enviar';
  9. }
  10.  
  11. //Enviar email con el parámetro "from"
  12. $asunto = "Prueba de correo";
  13. $cuerpo = "Cuerpo del mensaje";
  14. $cabeceras = "From: [email protected]" . "\r\n";
  15. $cabeceras .=  "X-Mailer: PHP/" . phpversion();
  16.  
  17. if (mail($para,$asunto,$cuerpo,$cabeceras)) {
  18. echo 'envio existoso';
  19. }else {
  20. echo 'error al enviar';
  21. }

Nota: para mas info verifica el manual de PHP mail()
Nota2: >.< se me olvidaba, para hacer pruebas en un equipo local es necesario instalar un servidor SMTP, sin este no podrás enviar ningún email, o por el contrario usar una librería especifica para envió de correos como phpmailer...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 19/11/2011, 09:13
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Enviar mail a usuario registrado en una db

Cita:
Iniciado por Nemutagk Ver Mensaje
No estoy siendo mi mucho menos "brusco"...



Como ya te lo dije, muestra el código que tienes para enviar el email y di el problema que tienes, sin mas datos no se te puede ayudar, no hay adivinos, en todo caso solo te diré que hagas un...

Código PHP:
Ver original
  1. $asunto = "Prueba de correo";
  2. $cuerpo = "Cuerpo del mensaje";
  3.  
  4. if (mail($para,$de,$asunto,$cuerpo)) {
  5. echo 'envio existoso';
  6. }else {
  7. echo 'error al enviar';
  8. }

y en teoría debería funcionar...
este es el ejemplo que use:

Código PHP:
$para $_POST['email'];
$titulo 'Welcome';
$mensaje 'Hola bienvenido a SGE';
$cabeceras 'From: [email protected]"\r\n" .
'Reply-To: [email protected]"\r\n" .
'X-Mailer: PHP/' phpversion();

mail($para$titulo$mensaje$cabeceras); 
despues de "die(you have been registered!
  #9 (permalink)  
Antiguo 19/11/2011, 09:15
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar mail a usuario registrado en una db

Lee el mensaje anterior que publique, di donde lo estas probando (en tu equipo local o en un servidor), y que problemas tienes, te manda un error? no llega al buzón?
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #10 (permalink)  
Antiguo 19/11/2011, 09:21
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Enviar mail a usuario registrado en una db

Cita:
Iniciado por Nemutagk Ver Mensaje
Lee el mensaje anterior que publique, di donde lo estas probando (en tu equipo local o en un servidor), y que problemas tienes, te manda un error? no llega al buzón?
ahora lei, perdon... lo estoy usando en un servidor pero estoy probando el ultimo ejemplo que me pasaste (no me llegaba al buzon)
  #11 (permalink)  
Antiguo 19/11/2011, 09:27
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar mail a usuario registrado en una db

Es muy difícil saber que es lo que esta mal usando la función mail() ya que es muy básica, puede que tengas bloqueada la función mail(), puede que el filtro de SPAM del correo destinatario este borrando el correo, en fin, no hay forma de saber realmente que esta pasando, en estos casos personalmente prefiero usar una clase específicamente para enviar correos, en este caso PHPMailer, dale una checada, incluso, si no hay forma de enviar el email desde mail() puedes usar un servidor SMTP externo, como GMail con esta clase...

Lo ultimo, estas seguro que $_POST['email'] realmente tiene un valor? o en este caso una dirección de email valida? ya checaste el buzon de spam?
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #12 (permalink)  
Antiguo 19/11/2011, 09:38
Avatar de Ferdinand1945  
Fecha de Ingreso: noviembre-2010
Ubicación: Estocolmo
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Enviar mail a usuario registrado en una db

Cita:
Iniciado por Nemutagk Ver Mensaje
Es muy difícil saber que es lo que esta mal usando la función mail() ya que es muy básica, puede que tengas bloqueada la función mail(), puede que el filtro de SPAM del correo destinatario este borrando el correo, en fin, no hay forma de saber realmente que esta pasando, en estos casos personalmente prefiero usar una clase específicamente para enviar correos, en este caso [URL="http://phpmailer.worxware.com/index.php?pg=examplebmail"]PHPMailer[/URL], dale una checada, incluso, si no hay forma de enviar el email desde mail() puedes usar un servidor SMTP externo, como GMail con esta clase...

Lo ultimo, estas seguro que $_POST['email'] realmente tiene un valor? o en este caso una dirección de email valida? ya checaste el buzon de spam?
Si chequee Spam, $_POST['email'] es el mail que recojo de la persona que se registro, esta validado, almenos en la db lo ves sin problemas, pero me sigue sin mandar el correo (se que es por que estoy poniendo el codigo en el lugar erroneo, asi que estoy probando ir poniendolo en otras partes del php pero siempre despues de "die you have been registred"

asi lo tengo ahora:

Código PHP:
 $connect mysql_connect("xxxxxx.se.mysql""xxxxx_se""xxxxxxx");
                      
mysql_select_db("xxxx_se"); //select database
                      
                        
$queryreg mysql_query("INSERT INTO `users`(id, fullname, adress, postn, ort, personn, email, username, password, date) VALUES ('','$fullname', '$adress', '$postn', '$ort', '$personn', '$email', '$username', '$password', '$date')");  
                        
                         die(
"You have been registred! <a href='index.php'>Return to log in page</a>"); 
                         
                                                        
$para $_POST['email'];
                                                        
$titulo 'Welcome';
                                                        
$mensaje 'Vällkomen till STUDOCH!';
                                                        
$cabeceras 'From: [email protected]"\r\n" .
                                                        
'Reply-To: [email protected]"\r\n" .
                                                        
'X-Mailer: PHP/' phpversion();

                                                        
mail($para$titulo$mensaje$cabeceras);  
                       }
                 
                 } 
        } 
  #13 (permalink)  
Antiguo 19/11/2011, 09:57
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar mail a usuario registrado en una db

Amigo, es muy sencillo la razón por la cual no envía nada, la función die() mata el proceso de PHP que esta ejecutando el archivo, por lo cual, el código después del die() no se ejecutará por ningún motivo, quita el die... para imprimir existe el "echo"
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: mail, mysql, registro, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:48.