PHP_우편물
mail()
PHP mail() 함수는 스크립트에서 전자 메일을 보내는 데 사용됩니다.
문법
mail(to,subject,message,headers,parameters)
매개 변수
묘사
to
반드시이메일 수신자를 규정하다.
subject
반드시전자 메일의 주제를 규정합니다.주석: 이 매개 변수는 새 줄 문자를 포함할 수 없습니다.
message
반드시보낼 메시지를 정의합니다.LF()를 사용하여 행을 구분해야 합니다.줄당 70자로 제한해야 합니다.
headers
선택 사항입니다.From, Cc, Bcc 등의 추가 제목을 지정합니다.CRLF(\r)를 사용하여 추가 제목을 구분해야 합니다.
parameters
선택 사항입니다.메일 발송 프로그램에 추가 파라미터를 규정하다.
참고: PHP는 메일 함수를 사용할 수 있도록 설치되어 실행 중인 메일 시스템이 필요합니다.사용하는 프로그램은 php를 통과합니다.ini 파일의 설정 설정을 정의합니다.
간이 E-Mail
PHP를 통해 이메일을 보내는 가장 간단한 방법은 텍스트 이메일을 보내는 것이다.
다음 실례에서 우리는 먼저 변수 ($to, $subject, $message, $from, $headers) 를 설명하고 메일 () 함수에서 이 변수를 사용하여 이메일을 보냅니다.
<?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를 통해 자신의 사이트에서 피드백 폼을 만들 수 있다.다음 예제에서는 지정된 e-mail 주소로 텍스트 메시지를 보냅니다.
<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,
$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>
인스턴스 설명:
주석: 이 간단한 이메일 발송은 안전하지 않습니다.
E-mail 주입
먼저 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 protected]%0ACc:[email protected]
%0ABcc:[email protected],[email protected],
[email protected],[email protected]
%0ABTo:[email protected]
여느 때와 마찬가지로 메일 () 함수는 위의 텍스트를 메일 헤더에 넣으면 현재 헤더에 추가 Cc:, Bcc: 및 To: 필드가 있습니다.사용자가 제출 단추를 눌렀을 때, 이 이메일은 위의 모든 주소로 발송됩니다!
E-mail 주입 방지
전자 메일 주입을 방지하는 가장 좋은 방법은 입력을 검증하는 것이다.
여기에는 양식의 이메일 필드를 검사하는 입력 인증 프로그램이 추가되었습니다.
<html>
<body>
<?php
function spamcheck($field)
{
//filter_var() sanitizes the e-mail
//address using FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//filter_var() validates the e-mail
//address using FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
if (isset($_REQUEST['email']))
{
//if "email" is filled out, proceed
//check if the email address is invalid
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{
//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>
위의 코드에서는 PHP 필터를 사용하여 입력을 검증했습니다.
Mail 함수
메일 함수를 사용하려면 PHP가 설치되어 실행 중인 메일 시스템이 필요합니다.사용할 프로그램은 php입니다.ini 파일의 설정 설정은 정의되어 있습니다.
Mail 구성 옵션:
이름
기본값
묘사
변경 가능
SMTP
"localhost"
Windows 전용: SMTP 서버의 DNS 이름 또는 IP 주소입니다.
PHP_INI_ALL
smtp_port
"25"
Windows 전용: SMTP 포트 번호.PHP 4.3 부터 사용할 수 있습니다.
PHP_INI_ALL
sendmail_from
NULL
Windows 전용: PHP에서 보낸 전자 메일에 사용할 "from"주소를 지정합니다.
PHP_INI_ALL
sendmail_path
NULL
유닉스 시스템 전용:sendmail 프로그램의 경로(일반적으로/usr/sbin/sendmail 또는/usr/lib/sendmail)를 규정합니다.
PHP_INI_SYSTEM
이 함수를 지원하는 최초의 PHP 버전을 나타냅니다.
함수
묘사
PHP
ezmlm_hash()
EZMLM 메일 리스트 시스템에 필요한 해싱 값을 계산합니다.
삼
mail()
스크립트에서 직접 전자 메일을 보낼 수 있습니다.
삼
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Boot에서 JavaMailSender를 사용하여 메시지를 보내는 방법의 예제(소스 코드 첨부)단원 테스트를 통해 간단한 메일을 보냅니다. "Spring Boot의 starter 모듈은 자동화된 설정을 제공하기 때문에spring-boot-starter-mail 의존을 도입한 후 프로필의 내용에 따라 자바 Ma...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.