Using perl Syntax Highlighting
- # MODO RECUPERAR CONTRASEÑA #
- sub index_recuperar_contrasena{
- # 1.- Cargo todas mis librerías en la variable self.
- my $self = shift;
- # 2.- Recibo el query que viene desde el navegador y lo guardo en la variable q
- my $q = $self->query();
- # 3.- Asigno variables a cada uno de los parámetros que recibo desde el navegador.
- my $email = $q->param("email");
- # 4.- Asigno la plantilla que procesara el modo cambiar contraseña
- my $file = "rm/index/form_recuperar_contrasena";
- # 5.- Creo una variable que contendrá un hash con todos los datos que procesara mi plantilla.
- my $vars;
- # 6.- Verifico si el email recibido no se encuentra registrado en la base de datos
- my $email_valido = $self->usuario_verificar_email($self, $email);
- if(!@$email_valido){
- #6.a.1.- Mando un mensaje indicando que ese correo no se encuentra registrado.
- $$vars{"recuperar_contrasena_mensaje"} = "Tu correo no se encuentra registrado en nuestra base de datos.";
- }else{
- #6.b.1.-Creo un id para la recuperación de contraseña
- my $time = time()."".(time()+10)."".(time()-10);
- my $recovery = crypt($time,"recovery");
- #6.b.2.-Guardo el id de la recuperación de contraseña en la base de datos
- #$self->usuario_guardar_recovery($self, $email, $recovery);
- #6.b.3.-Genero el enlace para recuperación de contraseña.
- my $enlace = "http://conecta.zapto.org/tierra_activa?rm=index&email=".$email."&id=".$recovery."&modo=recovery";
- #6.b.4.-Genero el mensaje que enviare al correo electrónico.
- my $mensaje = "Saludos!!! Debes visitar el siguiente enlace para que ingreses tu nueva contraseña\n\n".$enlace;
- #6.b.5.-Envío el correo
- my $enviar_correo = enviar_correo($self, $email, "Recuperación de Contraseña - Tierra Activa", $mensaje);
- #6.b.6.-Mando un mensaje indicando que el enlace de recuperación ha sido enviado al correo
- $$vars{"recuperar_contrasena_mensaje"} = "Se ha enviado un enlace a tu correo para que solicites una nueva contraseña";
- }
- #7.- Retorno la plantilla con todas las variables procesadas.
- return $self->processtmpl($file,$vars);
- }
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
En el paso 6.b.5 envío en correo usando esta función
Using perl Syntax Highlighting
- # ACCION - ENVIAR CORREO ELECTRÓNICO
- sub enviar_correo{
- my ($self, $email, $asunto, $mensaje) = @_;
- use Email::Send::SMTP::Gmail;
- my $mail=Email::Send::SMTP::Gmail->new(
- -smtp=>'gmail.com',
- -pass=>'pwd',
- );
- $mail->send(
- -to=>$email,
- -subject=>$asunto,
- -verbose=>'1',
- -body=>$mensaje,
- -chartset=>'UTF-8'
- #-attachments=>'',
- );
- $mail->bye;
- }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
El problema es el siguiente, cuando llama a la función enviar correo me retorna directamente a la página del cliente causando un error de cabecera. He buscando la forma de que llegue hasta el paso 7, pero nada... ¿Qué puedo hacer para solucionar ese problema, o lo estoy entendiendo mal?
El error es: malformed header from script. Bad header=Attachments successfully verif: index.pl