Pregunta

Estoy usando sendmail en perl y noté (después de mucho golpear la cabeza contra el muro) que cuando el script se ejecuta en la línea de comandos, necesita que omita los \ n (s) después de su correo electrónico y el del destinatario. La dirección de correo electrónico para formatear el correo correctamente, pero cuando se ejecuta a través de CGI si esos \ n (s) no están allí, devuelve un error que indica que el correo electrónico del destinatario tiene un formato incorrecto.

¿Alguien más ha encontrado esto? ¿Qué están haciendo los dos de manera diferente?

¿Fue útil?

Solución

En algunos de tus comentarios, mencionas que estás ejecutando el script desde la línea de comandos con la opción -l (perl -l foo.cgi).

La opción -l habilita el procesamiento automático de final de línea, y como su problema es con los finales de línea, le sugiero que lo intente sin el -l.

Otros consejos

¿De dónde vienen los datos? ¿Codificado en el script o desde un formulario web?

Como punto de partida, si obtiene la dirección de correo electrónico del destinatario desde un formulario web, los spammers utilizarán su formulario . Es una garantía del 100%.

El término " CGI " es amplio, si te refieres a que tu script de perl se ejecute como CGI en lugar de tu perlscript que se ejecute en la línea de comandos, me gustaría mirar hacia las rutas que tiene el script y su entorno general heredado. Especialmente si lo estas ejecutando como usuarios diferentes. Si el servidor web está en un chroot, etc.

use Data::Dumper;
warn(Dumper(\%ENV));

Entonces supongo que tienes algo como esto para ejecutarlo a través de la línea de comandos:

my $your_email = "you@foo.bar";
my $recipient_email = "them@foo.bar";

y esto cuando se ejecuta a través de CGI " ;:

my $your_email = "you@foo.bar\n";
my $recipient_email = "them@foo.bar\n";

Entonces, la pregunta que te haré es cómo llamas a sendmail con las variables anteriores, y también a qué te refieres cuando dices que "se está ejecutando a través de CGI". en lugar de ejecutar a través de la línea de comandos? ¿Acaba de agregar el código CGI y aún se está ejecutando a través de la línea de comandos o visitando su URL en un navegador web?

scroll top