2013-10-02 3 views
0

Perl에서 놀고 있었고 작은 이메일 프로그램을 작성했습니다. 그것은 다음과 같이 갔다 :이메일 프로그램이 Perl에서 작동하지 않습니다.

어떤 이유
# -w 
#the purpose of this program is to send an email . 
print "Hello. Welcome to Paramjot's Mail Program. Please enter your name.\n"; 
$name = <STDIN>; 
chomp ($name); 
print "Hello, $name. Please type in the email address you wish to send your email to\n"; 
$mailadds = <STDIN>; 
chomp ($mailadds);    
open MAIL, "|mail $mailadds"; 
print "Please type the message you wish to send below.\n"; 
$message = <STDIN>; 
chomp ($message); 
print MAIL "$name says: $message"; 
close MAIL; 

, 나는이 프로그램을 실행하면 프로그램이 메시지를 요청하기로하고 대신 내가 해결하기 위해 할 일을

mail is not recognized as a batch file, internal or external command, or an application. 

말한다 때까지 작동 이 문제?

+2

당신의'open' 문은 * nix 상자에서 볼 수있는 종류의 것이지만 MS Windows의 오류 메시지가 냄새가납니다. 메일/SMTP 모듈을 사용하지 않으시겠습니까? – tjd

+0

개방형 성명서를 다른 Windows보다 더 우량한 것으로 대체하는 방법은 무엇입니까? – user2532642

+2

'MIME :: Lite','Net :: SMTP' 또는 유사한 시도 –

답변

1

오류 메시지는 Perl이 아닌 운영 체제에서 제공됩니다.

open 문이 mail $mailadds 명령을 실행하는 새 프로세스를 시작하려고 시도하지만 운영 체제가 mail 명령을 인식하지 못해이 작업이 실패합니다. 즉각적인 오류를 해결하려면 컴퓨터에 mail (또는 이와 동등한 프로그램)이 설치되어 있는지 확인하고 open 문을 변경하여 해당 프로그램의 전체 경로와 올바른 파일 이름을 제공해야합니다.

전반적인 작업에 대한 더 나은 해결책은 CPAN에서 메일 처리 모듈을 가져 와서 외부 프로그램을 호출하는 대신이를 사용하는 것입니다. 이러한 모듈은 친숙한 인터페이스를 제공하며 메일을 보내는 데 사용되는 프로그램의 정확한 이름과 위치를 결정하는 것과 같은 운영 체제 별 세부 정보를 추상화하는 경우가 많습니다.

필자는 개인적으로 모듈 유지 관리자가 모듈을 사용하지 말 것을 권유하기는하지만 을 사용하는 경향이 있습니다. 링크 된 문서에는 자신의 조언에 유의하고 MIME :: Lite를 사용하지 않기로 선택하면 "더 나은 대안"으로 간주되는 메일 발송 모듈에 대한 제안이 포함됩니다.

관련 문제