2012-04-20 2 views
1

발신자 주소가 적힌 PHP mail()을 사용하여 몇 개의 newletters를 보냅니다.PHP가 반송 이메일을 감지하고 저장합니다.

내가 조사해야 할 몇 가지 이유 때문에, 이들 newlsetter 중 많은 수가 반송되어 발신자 주소로 "실패 알림"을 ​​반환합니다.

현재이 이메일은 발신자의 이메일을 읽는 이메일 클라이언트로 반환됩니다.

필자는 마케팅 담당자에게 "실패한"이메일 주소를 모두 저장하고 관리 할 수 ​​있기를 바랍니다. 물론 전자 메일 클라이언트의 각 전자 메일 주소를 복사/붙여 넣기하는 것은 매우 어렵습니다 (수백 개입니다).

PHP를 통해 이러한 주소를 탐지하여 catch하는 방법이 있습니까?

미리 감사드립니다.

+0

메일 서버로 사용하는 내용에 따라 세부 정보를 추가하십시오. PHP에는 IMAP 우편함을 열어 읽을 수있는 IMAP 코드가있는 것처럼 항상 옵션이 있습니다.이를 수행하고 전자 메일을 MySQL DB에 넣을 수 있습니다. – James

답변

0

mail() 명령에서 실패한 메시지에 대한 정보를 가져올 수 없으므로 로컬 메 일 서버로만 메시지를 보내어 처리합니다.

cronjob을 구현하거나 정기적으로 호출되는 스크립트를 구현하여 사서함을 확인할 필요가 있습니다. 따라서 PHP에서 IMAP and POP functions을 사용하여 메시지를 가져오고 실패한 메시지를 처리해야합니다.

또는 서버에서 오류가 발생했을 때 실행할 코드를 포함시킬 수 있는지 확인하려면 메일 서버 설명서를 확인해야합니다. 따라서 메일 서버 자체는 데이터베이스 내에서 실패한 메시지에 플래그를 지정하거나 적어도 실패한 메시지를 제공하는 스크립트를 호출합니다.

0

일반적인 해결책은 VERP http://cr.yp.to/proto/verp.txt입니다. 기본적으로 각 메시지마다 고유 한 봉투 발신자를 사용하십시오. 그 특정 주소로 보내진 것은 당신이 보내려했던 주소에서 반송됩니다.

는 예를 들어, 목록 [email protected] 호출하면 당신은 [email protected]처럼 그 메시지의 봉투를 보낸 사람이 될 것 [email protected]에 뭔가를 메시지 12345를 보내고 당신의 MTA는 올바른 위치 (이 주소로 라우팅 이메일을 구성해야 데이터베이스에서 실패한 주소를 제거하는 스크립트 등).

물론 적절한 메일 링리스트 관리자를 사용해야한다면 (물론해야합니다!), 이미이 모든 것을 처리하는 논리가 포함되어있을 것입니다. 구성의 간단한 문제 여야합니다.

관련 문제