문제

나는 Perl에서 Sendmail을 사용하고 있으며 (벽에 대한 헤드를 많이 두드린 후) 스크립트가 명령 줄에서 실행될 때 전자 메일과 수신자의 이메일 주소를 제거해야한다는 것을 알았습니다. 메일을 올바르게 포맷하려면 주문하지만 CGI를 통해 실행중인 경우 n (S)이없는 경우 수신자의 이메일이 잘못되었음을 나타내는 오류를 반환합니다.

다른 사람이 이것을 만났습니까? 두 사람은 다르게 무엇을하고 있습니까?

도움이 되었습니까?

해결책

몇 개의 의견에서 당신은 -l 옵션 (perl -l foo.cgi)을 사용하여 명령 줄에서 스크립트를 실행한다고 언급합니다.

-L 옵션을 사용하면 자동 라인 끝 처리를 가능하게하며 문제로 인해 라인 엔딩이 있으므로 -L없이 시도하는 것이 좋습니다.

다른 팁

나는 당신이 지휘관의 프롬프트에서 데이터를 얻고 있다고 내기하고 있습니다. chomp다음과 같이 ing :

my $send_to = <>;

이것은 $ send_to에 이미 " n"이 있음을 의미합니다. 둘 다 변수를 동일한 방식으로 작동하게합니다.

my $send_to = <>;
chomp($send_to);

아니면 그냥

chomp(my $send_to = <>);

데이터는 어디에서 나오나요? 스크립트 또는 웹 양식에서 하드 코딩?

따로, 수신자의 이메일 주소를 웹 양식에서 받으면 양식 ~ 할 것이다 스패머가 사용하십시오. 100% 보증입니다.

"CGI"라는 용어는 광범위합니다. Perl 스크립트가 CGI 대 Yur PerlScript로 실행되면 명령 줄에서 실행되면 스크립트가 가지고있는 경로와 일반적인 상속 환경을 찾습니다. 특히 다른 userID로 실행하는 경우. 웹 서버가 chroot 등에있는 경우

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

그래서 나는 당신이 명령 줄을 통해 실행하기 위해 이와 같은 것을 가지고 있다고 생각합니다.

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

그리고 이것은 "CGI를 통해 실행"할 때 :

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

그래서 내가 당신에게 묻는 질문은 위의 변수로 SendMail을 호출하는 방법과 "CGI를 통해 실행"대 명령 줄을 통해 실행할 때 의미하는 바입니다. CGI 코드를 추가하고 여전히 명령 줄을 통해 또는 웹 브라우저에서 URL을 방문하여 실행 중입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top