2011-01-21 2 views
2

Zend_Mail 및 다음 코드를 사용하여 이메일 메시지를 보냅니다.Zend_Mail을 사용하여 보내기 전에 스팸 확인

$mail = new Zend_Mail('UTF-8'); 
$mail ->setBodyText($plainBody) 
    ->setBodyHtml($htmlBody) 
    ->setSubject($subject) 
    ->setFrom(FROM_ADDR, FROM_NAME) 
    ->addTo($email, $name) 
    ->addHeader(MY_HEADER, serialize(array('foo' => 'bar'))) 
; 

나는 준비된 메시지의 스팸 평가를 확인해야하고 나는 어쌔신를 사용하여 작업을 수행하고 싶습니다.

콘텐츠가 포함 된 파일을 만들고 exec('spamc $filename')과 같은 파일을 만들려고했지만 전체 MIME 본문으로 파일 내용을 가져 오는 방법은 무엇입니까? Zend_Mail_Abstract 클래스 (library/Zend/Mail/Transport/Abstract.php)에 _buildBody() 함수가 있다는 것을 알았지 만 반환되는 함수는 protected입니다.

감사

+0

spamassassin이 마음에 들지 않을 수도있는 이메일을 보내지 마십시오 ... – ThiefMaster

+0

맞지만, 내용을 알지 못합니다. 그것은 뉴스 레터 응용 프로그램이며 사용자는 자신의 메시지가 스팸으로 취급 될 수 있는지 확인할 수 있어야합니다. –

답변

0

, 다음 spamc를 통해 전자 메일 메시지를 실행

http://spamassassin.apache.org/full/3.1.x/doc/spamc.html

인 spamc는 인 spamc/spamd에 쌍 클라이언트의 절반입니다. 메일을 처리하기 위해 스크립트에서 spamassassin의 위치 에 사용해야합니다. STDIN에서 메일을 읽고 스팸 메일에 스풀링 한 다음 결과를 다시 읽고 STDOUT으로 인쇄하십시오. Spamc는로드시 오버 헤드가 매우 낮으므로 전체 스팸 어쌔신 프로그램보다로드하는 것이 훨씬 빨라야합니다.

  1. 임시 파일에 메시지를 작성하고 STDIN를 통해 메시지를 보낼 proc_open()으로 명령을 실행 shell_exec('spamc < message.tmp'), 또는
  2. 을 실행 :

다음과 같은 방법으로 PHP에서 사용을 할 수 있습니다.

0

난 당신이받는 사람의 말에 스팸 검사를 시뮬레이션 할 가정입니다. 흥미로운 아이디어이지만, 당신에게주는 결과는 현실감이 100 %에 미치지 못할 것입니다. 전자 메일이 스팸인지 (예 : 보낸 사람 IP 및 경로)를 결정하는 데 도움이되는 많은 중요한 정보를 추가하는 것은 보내는 프로세스입니다.

어쨌든이 작업을 수행하려면 다음을 구현해야합니다. 예를 들어 Zend_Mail_Transport_Smtp을 기준으로 사용자 정의 Zend_Mail_Transport 클래스입니다. 전송 클래스가 SMTP 서버로 보내는 모든 데이터는 텍스트 파일로 재 라우팅해야합니다. 내가보기 엔 한 눈에 볼 수 있듯이, 그것은 약간의 일이 될 것이지만 불가능하지는 않을 것입니다. 당신이 스팸 어쌔신를 사용하려면

+0

예, 시뮬레이션하고 싶습니다. 간단히 말해서, ** 진짜 ** 메시지를 보내야합니다. 로컬 주소'www-data' (php running user)를 Maildir에 저장하는 아이디어일까요? –

+0

@Fabio가 로컬 주소로 보내는 것은 가장 쉬운 방법 일 수 있습니다. 또는, Zend의 캡슐화는 커스텀'Zend_Mail_Transport'를 작성하는 것을 가능하게합니다. –

관련 문제