Soy nueva en Perl. Estoy realizando algunos cgi sencillos para practicar y aprender.
Recientemente estoy realizando uno para el envío de emails. Sé que hay muchos scripts posteados en la web pero me propuse hacer uno yo misma.
Primero tengo un formulario html que recoge los datos y los pasa por el método POST a un script cgi. Todo parece marchar bien; de hecho en la web, el cgi muestra las variables que recibió por el método POST.
El problema es que cuando hace el envío del mail (yo lo hago con sendmail) no me reconoce las variables que le paso a través del método POST (nombre, apellido, mail), las cuales quiero enviarlas en el correo.
El hecho es que las variables que paso por POST no se imprimen en ninguna otra clase de salida que no sea el navegador. Para hacer la prueba mandé a imprimir una de las variables en un fichero plano y tampoco la muestra.
Quería ver si alguien por acá me confirma esto o me ayuda a resolverlo.
¡¡¡Les dejo el script acá...!!!
¡ Gracias de antemano ! Saludos.
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- #use strict;
- my $bufer;
- print "Content-type: text/html\n\n";
- read (STDIN, $bufer, $ENV{'CONTENT_LENGTH'});
- my @datos=split(/&/,$bufer);
- %hash;
- foreach (@datos)
- {
- my ($campo, $data)=split(/=/,$_);
- $data=~ tr/+/ /;
- $data=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
- $hash{$campo}=$data;
- }
- foreach (keys(%hash))
- {
- print "$_ = $hash{$_}";
- print "<br>";
- }
- my $destinatario="milevisj\@gmail.com";
- my $sendmail='sudo /usr/sbin/sendmail';
- $remitente=$hash{mail};
- my $asunto="Te han dejado un comentario";
- my $asunto2="Notificacion de recepcion de comentario";
- my $mensaje="Te ha enviado un comentario";
- my $mensaje2="Su comentario ha sido recibido, gracias por visitar jeje :p";
- #envio de email al admin
- open (MAIL, "|$sendmail -t") or die("No encuentro $sendmail!\n");
- print MAIL "To: $destinatario \n";
- print MAIL "Reply-to: $remitente\n";
- print MAIL "Subject: $asunto\n";
- print MAIL "$mensaje\n";
- close (MAIL);
- #Aqui hago una prueba colocando los datos en un fichero plano para validar que realmente no toma la variable $remitente
- open (MAIL, "> prueba") or die("No se puede abrir el fichero!\n");
- print MAIL "To: $remitente \n";
- print MAIL "Reply-to: $destinatario\n";
- print MAIL "Subject: $asunto2\n";
- print MAIL "$mensaje2\n";
- close (MAIL);
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4