2012-07-05 7 views
0

저는 이것을 집중적으로 연구했습니다. 여기, 스택 오버플로에서, 나는 사람이 전달할 수없는 메일을 되찾기 원한다면 PHP 메일() 함수와 함께 -f 매개 변수를 사용해야한다는 것을 알아 냈습니다. 다음은 내 스크립트입니다 (현재 그대로).PHP 메일() -f 매개 변수가 작동하지 않습니다.

//Send Confirmation email. Following are the variables for the email 
// mail function best practices: http://collaborate.extension.org/wiki/Best_Practices_Using_the_PHP_mail_Function 

$sendto = $email; // this is the email address collected from the foreach routine. 
$e_subject = stripslashes($subject); // Subject 
//$message = "<html>" . stripslashes($body) . "</html>"; 
$message = " 
    <html> 
    <body> 
    <p>Hello " . stripslashes($fName) . ":</p> 
    <div>" . stripslashes($body) . "</div> 
    </body> 
    </html> 
    "; 
// Always set content-type when sending HTML email 
$header = "MIME-Version: 1.0" . "\r\n"; 
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";; 

    // extract user domain so you can set up X-Mailer 
    $u_domain=substr(strrchr($user_email, '@'), 1); 
    $dom_array = explode(".",$u_domain); 
    $user_domain = $dom_array[0]; 
$header .= "X-Mailer: ". $user_domain ."\r\n";  
$header .= "X-Sender-IP: {$_SERVER['REMOTE_ADDR']}\r\n"; 
$header .= "X-Originating-IP: [".getenv("REMOTE_ADDR")."]\r\n"; 
$header .= "From: " . $user_email . "\r\n"; 
$header .= "Sender: ". $user_email . "\r\n"; 
// The "envelope sender" is the address listed in the "Return-Path:" header - and controls where the email is sent to in the event that a recipient address bounces. http://collaborate.extension.org/wiki/Best_Practices_Using_the_PHP_mail_Function 
$header .= "Return-Path:" . $user_email . "\r\n"; 
$header .= "Reply-To:" . $user_email . "\r\n"; 

$bounceTo = "-f". $user_email; 
// Collect variables from above and insert into the mail() function. 
mail($sendto, $e_subject, $message, $header,$bounceTo); 

많은 메모가 있음을 알게 될 것입니다. 내 메일()이 멋지게 보낸다. 메일을받은 편지함으로 포맷팅해야합니다. 그러나 ... $ bounceTo 변수 ("-f". $ user_email)가 작동하지 않습니다. 3 개의 비활성 주소로 의도적으로 메일을 보냈습니다. 반송 오류가 발생하지 않았습니다.

위의 코드의 모든 헤더 설정은 바운스 백에 영향을 줄 수 있음을 알았 기 때문에 나타납니다. 불필요한 헤더를 없애고 필요한 것을 추가하고자합니다. 그러나 ...이 시점에서 스크립트는 뒤죽박죽 인 것처럼 보입니다. 바운스 백을 생성하지 않습니다.

모든 의견을 환영합니다.

감사합니다 많은 :

파빌리온

답변

0

http://www.php.net/manual/en/function.mail.php#107321에 게시 된 코멘트 살펴 보았다. 그것은 올바른 방향으로 인도 할 수 있습니다.

+0

http://www.php.net/manual/en/function.mail.php#94170의 도움말도 도움이 될 수 있습니다. – jg314

+0

예 - 게시하기 전에 해당 게시물을 검토했습니다. 모든 반송은 보낸 사람과 동일한 반송 경로 여야하므로 해당 게시물의 제안은 적용되지 않습니다. – Pavilion

0

This thread explaining bounced mail in php이 도움이 될 수 있습니다. 개인적으로 반송 된 이메일을 처리하기 위해 매개 변수 -f을 사용하지 않아도되었습니다.

+0

예 - 그 스레드를 검토 한 결과, 실제로는 내 것과 같은 종류의 응용 프로그램이 아닙니다. 반송 이메일 주소는 모든 사용자마다 바뀝니다. – Pavilion

0

모든 서버에서 바운스 주소를 무시할 수 없습니다. 특히 공유 호스팅 서버를 사용하는 경우에는 대개이 방법을 사용할 수 없습니다. 이 경우 매우 제한된 mail() 함수를 사용하지 말고 phpmailer 또는 swiftmailer과 같은 smtp 라이브러리를 사용하는 것이 좋습니다.

Btw : 반송 주소를 확인하기 위해 비활성 주소로 메일을 보내지 않아도됩니다. 활성 계정으로 보내고, 메시지 소스에서 "Return-Path"헤더를 찾습니다. 이것이 바운스 주소입니다.

+0

OK - 방금 phpmailer를 시도해도 해결할 수있는 것보다 더 많은 문제가 발생합니다 : – Pavilion

+0

OK - phpmailer를 시도한 결과 문제가 해결됩니다 : 1. 이메일을 다시 반송하지 못했습니다. 2. 변수를 사용하여 사용자가 입력 한 내용을 본문에 전달하면 본문은 사용자가 입력 한 내용을 선택하지 않습니다. 3. 몸체가 첫 번째 표준 단락을 가져 오지만 html로 통과하지는 않습니다. HTML 태그가 텍스트 자체의 일부인 것처럼 HTML 태그를 볼 수 있습니다. 4. 이전에는 mail() 함수가 TO :에받는 사람의 이름 만있는 각받는 사람에게 전자 메일 주소를 보냈습니다. 이제 (phpmailer로) TO에는 모든 수신자의 이름이 포함되어 있습니다. 좋은 것은 아닙니다. – Pavilion

관련 문제