2012-12-06 10 views
0

procmail을 사용하여 PHP 스크립트에 전자 메일을 보내려고하므로 스크립트에서 MySQL 데이터베이스를 확인하고 보낸 사람 전자 메일을 기반으로 제목 줄을 편집합니다. 나는이 작업을 수행 할 수있는 작업 프록있어 믿고 :Procmail을 PHP와 함께 사용하려면 어떻게해야합니까?

:0: 
* ^To:.*@barrett.com 
! '/usr/local/bin/php-5.2 -f $HOME/ticket/emailcustcheck.php' 

그러나, 나는 프록 명령을 실행하는 방법을 정확하게 모르겠어요. 전자 메일은 어떻게 PHP 스크립트에 전달 되나요? 따라서 스크립트 내에서 전자 메일을 참조하려면 어떻게해야합니까?

답변

0

스크립트에 배관에 대한 올바른 구문은

:0 # no lock file 
* ^To:.*@barrett\.com 
| /usr/local/bin/php-5.2 -f $HOME/ticket/emailcustcheck.php # no quotes, use pipe 

! 작업이 이메일 주소로 전달하는 시도 할 것이다, 그러나 물론, PHP 인터프리터의 경로와 긴 인용 문자열은 아니다 유효한 이메일 주소.

잠금이 필요한 경우 (즉,이 PHP 스크립트의 두 인스턴스를 동시에 실행할 수 없음) 잠금 파일의 이름을 지정해야합니다. Procmail은 여기에 잠금 파일 이름을 유추 할 수 없으므로 잠금 작업을 수행하면 오류 메시지 만 생성됩니다. 확실하지 않은 경우에는 이름이 지정된 잠금 파일을 추가하는 것이 더 안전 할 수 있지만 동시성 문제가없는 경우 (예 : 스크립트가 데이터베이스에 쓰기 작업을 수행하는 동안 다른 프로세스가 데이터베이스를 사용하지 않아야 함) 필요하지 않아야합니다 잠재적으로 처리 속도가 느려질 수 있습니다.

정규 표현식도 다소 부정확 해 보이지만 Cc 메일을 비롯하여 To:을 트리거하려고 할 수 있습니다. 그렇다면 문서에서 ^TO_ 매크로를 찾으십시오.

스크립트는 메시지를 표준 입력으로 가져옵니다. 배열의 모든 입력 행을 읽거나 두 개의 배열로 분할하여 첫 번째 빈 줄 앞의 모든 내용이 "머리글"배열로 들어가고 나머지는 "본문"배열로 들어가야합니다. 또는 PHP는 표준 입력에서 객체로 전자 메일 메시지를 읽을 수있는 클래스가 있습니다.

0
:0 wf 
* ^To:.*@barrett\.com 
| /usr/local/bin/php-5.2 -f $HOME/ticket/emailcustcheck.php 

F은 즉, 메시지를 필터링을 변경하려는 procmail을 알려줍니다. w 필터 나 프로그램이 종료 될 때까지 기다렸다가 종료 코드를 확인하십시오.

당신이 메시지의 본문에서만 작동하려면 당신이 플래그를 시간을 추가해야합니다 메시지의 헤더에서만 작동하려면 당신은 플래그를 B 을 추가해야합니다

관련 문제