Forum und email

mail

(PHP 4, PHP 5)

mail — 메일을 보냅니다.

설명

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

mail()은 자동적으로 message 에 지정한 메세지를 to 에 지정한 수신자에게 메일을 보냅니다. 복수 수신자는 to 에 콤마로 구분한 각각의 어드레스를 지정할 수 있습니다. 부가 요소와 특별한 형태의 내용을 가진 Email을 이 함수를 이용하여 보낼 수 있습니다. MIME-encoding을 이용하여 이루어집니다 - 자세한 정보는 » 젠드 아티클이나 » PEAR Mime 클래스를 참고하십시오.

다음의 RFC도 유용합니다: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049.

mail()은 메일 전달이 성공하면 TRUE를, 그 외의 경우에는 FALSE를 반환합니다.

Warning

mail()의 윈도우즈판은 유닉스판과 많은 점에서 차이가 있습니다. 첫번째, 메세지를 작성할 때 로컬 바이너리를 사용하지 않고, 단지 직접 소켓 연결을 합니다. MTA가 네트워크 소켓을 리스닝하고 있을 필요가 있습니다. (localhost나 원격 머신 어디든지 가능합니다) 둘째, From:, Cc:, Bcc:, Date: 등의 사용자 헤더는 MTA에서 해석하지 않고, PHP에서 처리를 합니다. PHP < 4.3은 Cc: 헤더 요소(대소문자 구별)만을 지원합니다. PHP >= 4.3은 위의 모든 헤더 요소를 지원하고, 대소문자를 구별하지 않습니다.

Example#1 메일 보내기.

<?php
mail
("[email protected]""My Subject""Line 1\nLine 2\nLine 3");
?>

네번째 문자열 인자가 주어지면, 문자열은 헤더의 마지막에 추가됩니다. 일반적으로 기타 헤더를 추가할 때 사용합니다. 복수의 헤더는 캐리지리턴과 뉴라인으로 구별합니다.

Note: 헤더 구분에는 \r\n을 사용해야만 합니다. 일부 유닉스 메일 전송 에이전트는 하나의 뉴라인(\n)과는 작동하지 않습니다.

Example#2 추가 헤더를 지정해서 메일 보내기.

<?php
mail
("[email protected]""the subject"$message,
     
"From: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
     
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
     
"X-Mailer: PHP/" phpversion());
?>

additional_parameters 인자는 메일을 보낼 때 사용하는 sendmail_path 설정에 있는 프로그램에 추가 인자를 넘깁니다. 예를 들어, 센드메일을 사용할때 인증 전송자 주소를 지정하는 -f 센드메일 옵션을 사용하게 할 수 있습니다. 이 방법으로 인증 전송자를 지정했을 때 'X-warning'헤더가 메세지에 추가되는 것을 막기 위해서는 센드메일 설정에 웹 서버를 실행하는 유저를 추가해야 합니다.

Example#3 추가 헤더와 추가 명령줄 인자를 지정하여 메일 보내기.

<?php
mail
("[email protected]""the subject"$message,
     
"From: webmaster@{$_SERVER['SERVER_NAME']}""-fwebmaster@{$_SERVER['SERVER_NAME']}");
?>

Note: 다섯번째 인자는 PHP 4.0.5에서 추가되었고, PHP 4.2.3부터 이 인자는 안전 모드에서는 사용할 수 없습니다. 이를 사용하려고 하면 mail() 함수는 경고 메세지를 출력하고 FALSE를 반환합니다.

복잡한 email 메세지를 작성하기 위해 간단한 문자열 작성 테크닉을 사용할 수 있습니다.

Example#4 복잡한 메일 보내기.

<?php
/* recipients */
$to  "[email protected]", " // 콤마인 것에 주의.
$to .= "[email protected]";

/* subject */
$subject "Birthday Reminders for August";

/* message */
$message '
<html>
<head>
 <title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
 <tr>
  <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
 </tr>
 <tr>
  <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
 </tr>
 <tr>
  <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
 </tr>
</table>
</body>
</html>
'
;

/* HTML 메일을 보내려면, Content-type 헤더를 설정해야 합니다. */
$headers  "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* 추가 헤더 */
$headers .= "To: Mary <[email protected]>, Kelly <[email protected]>\r\n";
$headers .= "From: Birthday Reminder <[email protected]>\r\n";
$headers .= "Cc: [email protected]\r\n";
$headers .= "Bcc: [email protected]\r\n";

/* 그리고 메일을 보냅니다. */
mail($to$subject$message$headers);
?>

Note: tosubject 에 어떠한 뉴라인 문자도 존재해서는 안됩니다. 그렇지 않으면, 메일은 정상적으로 보내지지 않을 수 있습니다.

Note: to 인자는 "Something <[email protected]>" 형태로 주어져서는 안됩니다. mail 명령은 MTA와 통신할 때 이를 정상적으로 처리하지 못할 수 있습니다. (특히 윈도우즈에서)

참고: imap_mail().