2012-05-31 2 views
0

PHP에서 전자 메일을 보내려하고 있는데 작동하지만 전자 메일의 "보낸 사람"부분에 많은 추가 정보가 있음을 알았습니다 . 여분의 물건, 나는 이라고 가정하고, 내 서버의 정보는 입니까? 예를 들어 PHP 전자 메일의 추가 문자 "보낸 사람"필드

만 그대로 필드에서 이메일을 통해 오는 $from = "myname", 대신 "myname" 경우, 내가 좋아하는 뭔가를 얻을 :

[email protected]

$from = "myname"; 

mail($to,$formSubj,$formMssg,$from); 

정직한 : 여기, 중요한 부분은 내 $from VAR 것을 가지고 노는거야 내 PHP는 그게 내가 가지고있는 모든 것, 더 많거나 적은 것 ($from에 관한 한). 이것을 정리하거나 $from이라는 평범한 값 (이 경우 "myname") 만 나오게하려면 어떻게해야합니까?

답변

2

메일 기능의 네 번째 매개 변수가이 방식으로 작동하지 않습니다. 헤더 정보가 필요합니다. 당신이 사용하고 싶은 것을 달성하기

$header = "From: myname <[email protected]> \r\n"; 
mail($to,$formSubj,$formMssg,$header); 

은 당신도 외로운 myname을 사용할 수 없습니다. 유효한 이메일 주소 문자열은 myname <[email protected]> 또는 [email protected]입니다. myname을 입력하면 PHP는 이것을 이메일 주소로 해석하려고 시도합니다. 그래서 [email protected]을 얻는 것입니다. p3nlhg.phx3.secureserver.net은 서버의 호스트 이름이어야합니다.

헤더 매개 변수에 대한 좋은 점은 다른 덜 일반적인 필드를 지정하는 데 사용할 수 있다는 것입니다. 예컨대 : 각 헤더 속성의 끝에 캐리지 리턴/줄 바꿈 (\r\n)를 배치해야

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n"; 
$headers .= 'Cc: [email protected]' . "\r\n"; 
$headers .= 'Bcc: [email protected]' . "\r\n"; 

알 수 있습니다. 간단한 줄 바꾸기 기능이 작동하지 않습니다.

+0

"<[email protected]>"이라고하는 이메일이 있어야하는 부분은 무엇입니까? – somdow

+0

당신의 대답이 효과가 있었고 "from"필드의 헤더를 정리했습니다. 내 질문은, 내가 (복사/붙여 넣기) 귀하의 물건을 추가 할 때 (나는 그것을 편집 물론) 그것은 "$ 헤더 = 'MIME 버전 : 1.0'이 줄을 제거 할 때 작동하지 않습니다."\ r \ n "; ", 그것은 작동합니다. 왜 그런지 안다? 그리고 그것은 중요합니까? – somdow

+0

MIME-Version 헤더는 쓸데없는 모든 의도와 목적을위한 것입니다. 그래서 당신은 그것을 지정할 필요가 없습니다. 설명 : http://en.wikipedia.org/wiki/MIME#MIME-Version 그 대답의 일부는 이메일 머리글에서 어떤 종류의 것들을 지정할 수 있는지 보여주는 예입니다. 필자는 PHP 메일 함수 doc 페이지 (http://php.net/manual/en/function.mail.php#example-3150)에 대한 주석에서 직접 작성하지 않았습니다. –

-1

서버에 설치 한 메일 서버에서 오는 것이지만, 다른 하나 (예 : 후위, 택배 또는 기타)로 전환하십시오.

2

mail documentation에 따르면 $from$additional_headers 인수로 사용하고 있습니다.

대신 $from을 적절한 헤더로 변경하십시오. 예를 들어,

$from = "myname"; 
$headers = "From: $from <[email protected]>"; 
mail($to, $formSubj, $formMssg, $headers); 

additional_headers에 대한 설명서에 따르면,

메일을 전송, 메일 필수는에서 헤더가 포함되어 있습니다. additional_headers 매개 변수로 설정하거나 php.ini에서 기본값을 설정할 수 있습니다.

이 작업을 수행하지 않으면 과 유사한 오류 메시지가 표시됩니다. 경고 : mail() : "sendmail_from"이 php.ini 또는 사용자 정의 "보낸 사람 :"헤더에 설정되지 않았습니다.. 헤더 세트도 Return-Path Windows에서.

관련 문제