mail($to, $subject, $msg, $headers) 로 메일을 발송해보면
보낸 사람이 메일이나 메일 제목이 있어야 할 부분에
root@어쩌고저쩌고.cafe24.com
가 뜨는 경우가 있다.
일단
$subject = $_POST['subject']; $qna_tit = '메일제목'; $u_name = '메일 보낸 사람'; $u_email = '메일 보낸 사람의 이메일주소'; $to = 'abc4@naver.com'; $charset = 'UTF-8'; $subject = "=?".$charset."?B?".base64_encode($qna_tit)."?="; $from = "=?".$charset."?B?".base64_encode($u_name)."?=<$u_email>\r\n"; $headers ='MIME-Version: 1.0'."\r\n"; $headers.='Content-type: text/html; charset=UTF-8'."\r\n"; $headers.='From: '.$from."\r\n"; mail($to, $subject, $qna_post, $headers);
이렇게 해결이 된다.
저기 $headers 값을 설정하는 부분에 빈칸을 주의해서 넣어야한다.
그리고 from 부분에 <$u_email> 저렇게 쌍따옴표 안에서 하나의 문자열로 묶어줘야한다. 문자열 연결자 '.' 로 연결하면 제목에서 깨진다 ( 아웃룩에서는 제대로 보이지만 , 웹메일에서 깨진다 )
PHP는 공백에 민감한거같다. 심지어 캐시 문제인지는 모르겠으나
$headers .="Content-type: text/html; charset=UTF-8"."\r\n";// 깨짐 $headers.="Content-type: text/html; charset=UTF-8"."\r\n"; //안 깨짐 $headers .= "Content-type: text/html; charset=UTF-8"."\r\n"; //안깨짐
라는 이런 말도 안되는 현상도 겪었다. 공백에 유의하자.
그리고 $from 이메일은 유효한 이메일 주소를 적어줘야한다.
안그럼 다시 보낸 사람 주소 텍스트가 깨져서 전달된다.
그리고 $charset='UTF-8' 대문자로 넣으라. 소문자 넣으면 깨진다.
별 시덥잖은거에 삽질 한참 동안 함.
'코드 > PHP' 카테고리의 다른 글
[PHP 이해] 폼태그와 php스크립트 (0) | 2015.06.29 |
---|---|
[PHP]mysqli_fetch_array, mysqli_fetch_row, mysqli_fetch_assoc (0) | 2015.06.25 |
[PHP] mail() 함수 한글 깨짐 (0) | 2015.06.22 |
PHP HTTP 인증 (0) | 2015.04.17 |
mysqli_fetch_array, mysqli_fetch_row, mysqli_fetch_assoc (0) | 2015.04.12 |