2012-01-07 4 views
1

가능한 중복 : 나는 SMTP를 사용하여 내 Gmail 계정을 통해 이메일을 보내 SwiftMailer을 사용하고
Swiftmailer 4 does not retrieve bounces as $failedRecipientsSwiftMailer의 Gmail SMTP 실패

.

나는 모든 것을 완벽하게 설정 했으므로 문제없이 이메일을 보낼 수 있습니다. documentation

실패한 이메일 주소, (내가 그것을 $failures라고했습니다) send() 더 메시지가 성공적으로 전송되지 않은 경우 0을 반환하고 배열을 채우는 것을 말한다.

내가보고 있어요 문제는 내가 존재하지 않는 주소 ([email protected])로 이메일을 보내면, 내가 Gmail의 응답 얻을 수 있습니다 :

Mail Delivery Subsystem [email protected] 
9:06 PM (6 minutes ago) 
to me 
Delivery to the following recipient failed permanently: 

    [email protected] 

Technical details of permanent failure: 
DNS Error: Domain name not found 

----- Original message ----- 

그러나, swiftmailer는 여전히 1 (1 메시지를 반환합니다 성공적으로 보냄) $failures 배열은 비어 있습니다.

SSL을 사용하여 연결이 암호화 되었기 때문에 wireshark를 사용하여 패킷을 스니핑하고 볼 수 있다고 생각하지 않습니다.

필자의 직감은 Gmail의 SMTP 서버가 실패와 관련된 전자 메일을 생성하고 보내는 주소로 보내는 동안 성공을 반환한다는 점입니다.

이 정보가 맞습니까? 그렇다면 PHP에서 오류를 잡을 수있는 방법이 있습니까?

+0

이메일은 Swiftmailer에서만 보낼 수 있습니다. Swiftmailer는 오류 메시지를 나중에 확인합니다. – hakre

+0

그냥 팁 : MX DNS 레코드가 실제로 해당 전자 메일을 보내기 전에 해당 도메인에 있는지 확인할 수 있습니다. http://www.php.net/manual/en/function.checkdnsrr.php – JuCachalot

답변

0

Swift는 SMTP 서버가 배달을 위해 메일을 수락했는지 여부 만 알려주며 나중에 메일 배달 프로세스에서 나타나는 오류를 확인할 수 없습니다.

gmail의 SMTP 데몬이 메시지를 수락하고 처리하려고 할 때 실패했습니다.이 경우 늦게 알림을받을 수 있습니다.

프로그래밍 방식으로 확인하려면 Gmail 계정에 로그인하고 유사한 메일을 검색하는 IMAP 클라이언트를 작성할 수 있습니다. 노력할만한 가치가 있는지 확신 할 수는 없지만.

+1

나는 생각하지 않습니다. 그것은 어려울 것이다. 'Return-Path'를'bounce + uniqueid @ mydomain.com'과 같은 것으로 설정 한 다음'bounce @ mydomain.com'을 검사하고 그 고유 ID를 수집하는 cron 작업을 수행하면됩니다. 여기서 유일한 문제는 gmail이 사용자 정의'return-path' 헤더를 gmail 주소로 대체한다는 것입니다. 그러나 여기에서 주요한 문제는 아닙니다 :) – F21

관련 문제