[PHP 고급] 이메일 보내기(Sending E-Mails)
스크립트에서 곧바로 이메일을 보내보도록 합시다.
PHP mail() 함수
PHP에서 mail() 함수는 스크립트상에서 이메일을 보내는데에 사용됩니다.
문법
mail(to,subject,message,headers,parameters) |
매개변수 | 설명 |
---|---|
to | 필수. 메일을 받아 보게될 분을 지정합니닷. |
subject | 필수. 이메일의 제목을 지정합니다. 그런데, 여기에는 그 어떤 줄넘김 문자도 포함될 수 없어요. |
message | 필수. 보낼 메시지를 여기에 넣어줍니다. 각줄은 LF(\n)로 구분되어야 합니다. |
headers | 선택적. 추가적인 헤더를 지정해 줍니다. 추가적인 헤더들은 반드시 CRLF(\r\n)로 구분되어야 합니다. |
parameters | 선택적. sendmail 프로그램에 추가적인 매개변수를 지정합니다. |
참고: mail 함수가 사용가능하려면, 제대로 설치되고, 작동하는 이메일 시스템이 필요합니다.
사용될 프로그램은 php.ini 파일의 설정에 의해 정의됩니다.
런타임 설정
mail 함수의 동작은 php.ini 파일에 있는 설정에 의해 영향을 받습니다.
메일 설정 옵션:
이름 | 기본값 | 설명 | Changeable |
---|---|---|---|
SMTP | "localhost" | Windows only: SMTP 서버의 DNS 이름이나 IP 주소 | PHP_INI_ALL |
smtp_port | "25" | Windows only: SMTP 포트 번호. PHP 4.3 이후부터 사용가능 | PHP_INI_ALL |
sendmail_from | NULL | Windows only: PHP 에서 전송될 메일에 사용될 보낸사람 주소 설정. | PHP_INI_ALL |
sendmail_path | NULL | Unix systems only: sendmail 프로그램이 어디에 있는지 지정(보통 /usr/sbin/sendmail 이나 /usr/lib/sendmail) | PHP_INI_SYSTEM |
PHP - 심플한 이메일 전송 코드
PHP로 이메일을 보내는 가장 간단한 방법은 텍스트 이메일을 보내는 겁니다.
아래에서 예제에서 일단은 변수들을 선언하고 ($to, $subject, $message, $from, $headers), 그러고 난 다음에 그 변수들을 mail() 함수에서 사용하여
이메일을 보냅니다:
<?php $to = "[email protected]"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "[email protected]"; $headers = "From: $from"; mail($to,$subject,$message,$headers); echo "Mail Sent."; ?> |
PHP 메일 폼(Mail Form)
PHP로, 웹사이트에 피드백폼을 만들 수 있습니다. 아래의 예제는 지정된 이메일 주소로 단순한 텍스트 메시지를 보냅니다:
<html> <body> <?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail( "[email protected]", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html> |
위의 예제는 아래와 같이 동작합니다:
- 우선, email input 필드가 채워져 있는지 확인합니다.
- 설정 되어 있지 않다면(페이지를 맨처음 방문한 경우가 해당) HTML 폼을 출력
- 설정 되어 있다면(폼이 채워진 이후) 폼으로부터 이메일 전송
- 전송(submit) 버튼이 폼이 채워진 후 클릭되면, 페이지가 리로드되고,email input 필드가 설정되어 있는지 확인한 다음, 이메일을 전송
참고: 이 코드는 가장 심플한 이메일을 보내는 방법중 하나이긴 하지만, 전혀 안전하지 않습니다. 다음 포스팅에서는 이메일 스크립트에서의 취약점에 대해서 이야기하고, 사용자 입력의 유효성을 어떻게 검사하고 더 안전하게 할 수 있는지 간략히 설명해 보겠습니다..