2010-03-02 5 views
1

저는 PHP에서 저급 메일을 사용하는 데 어려움을 겪었으며이를 위해 라이브러리를 사용해야한다는 것을 알고 있습니다.하지만 지금은 옵션이 아닙니다.PHP 메일, 헤더 및 mail() 함수에 대한 호출, 무엇이 재정의?

PHP에서 메일을 보낼 때 보낸 사람, 참조 및 숨은 참조와 같은 추가 헤더를 수동으로 설정할 수 있지만 제목, 대상 및 본문을 설정할 수도 있습니다. 함수를 호출하면 headers를 mail() 함수로 전달하지만 해당 함수는 Subject, body 및 To도 "요청"합니다.

제 질문은 다음과 같습니다 : PHP는 어떻게 이중 의도를 처리합니까? Subject : foo를 갖도록 머리글을 수동으로 설정했지만 메일 호출시 제목과 함께 'foo'를 전달하면 ...?

저는 C를 읽을 수 없으므로 PHP 소스를 열면 아마 여기 도움이되지 않을 것입니다.

감사합니다.

답변

1

음, C를 읽을 필요가, 그냥 테스트 : 그 두 곳에서 피사체를 지정하면이 하나 라이너 :

의 PHP 특별한 아무것도하지 않는 : 당신은 전자를 얻을 수 두 개의 제목 헤더가있는 전자 메일 메시지. 어느 것이 당신의 전자 메일 클라이언트에 표시되는지는 내가 모르는 것입니다. 아마도 전자 메일 프로토콜에 정의되어있을 것입니다. 클라이언트 당 선택 일 수도 있습니다.

"To"헤더에 대해 PHP는 헤더를 수동으로 지정하지 않으면 $ 매개 변수에서 하나를 설정합니다. 하나를 설정하면 헤더가 우선 적용됩니다.

"보낸 사람"및 "받는 사람"헤더는 메시지를 보내고받는 사람에게 아무런 영향을 미치지 않습니다.이 메시지는 순전히 유익한 정보입니다. 메일 서버 소프트웨어는 보낸 사람과받는 사람을 암시 적으로 지정해야합니다. 헤더는이 목적을 위해 파싱되지 않습니다.

+0

출발지와 도착지에 관해 좋은 점은 알기 좋습니다. 보편적 인 문자 세트 및 다양한 첨부 파일을 사용할 때 저수준 전자 메일은 모든 RFC와 관련한 정글입니다. –

1

추가 헤더에 '받는 사람'또는 '제목'을 지정하면 생성 된 전자 메일에 나타나는 내용이 여기에있는 것처럼 보입니다.

은 만약 그렇다면, 그 대답은 간단 테스트하는 것입니다

$add_to ='to: "added" <[email protected]>"; // substituting your email address 
$param_to ='"param" <[email protected]>"; 
$add_subj ='subject: Subject in header'; 
$param_subj='Subject in param'; 

$add_hdr=$add_to . "\n" . $add_subj; 
mail($param_to, $param_subj, "body - test", $add_hdr); 

그런 다음 다시 얻을 메시지를 보라.

C.

+0

감사합니다. 난 그냥 실제로 그것을 테스트 할 수 있습니다 :) Btw : 두 개의 구문 오류가 귀하의 예제에서, 1과 2 줄 끝에 큰 따옴표로 끝납니다. –

+0

(doh! - 불행히도 S.O.에는 Vim 인터페이스가 없습니다!) 이메일 두 개가있는 것 같습니까? 주제는? – symcbean