PHP基礎-郵件服務
阿新 • • 發佈:2019-08-08
PHP mail() 函式
PHP mail() 函式用於從指令碼中傳送電子郵件。
語法
mail(to,subject,message,headers,parameters)
引數| 描述 -|- to |必需。規定 email 接收者。 subject |必需。規定 email 的主題。註釋:該引數不能包含任何新行字元。 message |必需。定義要傳送的訊息。應使用 LF (\n) 來分隔各行。每行應該限制在 70 個字元內。 headers |可選。規定附加的標題,比如 From、Cc 和 Bcc。應當使用 CRLF (\r\n) 分隔附加的標題。 parameters |可選。對郵件傳送程式規定額外的引數。
註釋:PHP 執行郵件函式需要一個已安裝且正在執行的郵件系統(如:sendmail、postfix、qmail等)。所用的程式通過在 php.ini 檔案中的配置設定進行定義。請在我們的 PHP Mail 參考手冊 閱讀更多內容。
PHP 簡易 E-Mail
通過 PHP 傳送電子郵件的最簡單的方式是傳送一封文字 email。
在下面的例項中,我們首先宣告變數($to, $subject, $message, $from, $headers),然後我們在 mail() 函式中使用這些變數來發送了一封 E-mail:
<?php $to = "[email protected]"; // 郵件接收者 $subject = "引數郵件"; // 郵件標題 $message = "Hello! 這是郵件的內容。"; // 郵件正文 $from = "[email protected]"; // 郵件傳送者 $headers = "From:" . $from; // 頭部資訊設定 mail($to,$subject,$message,$headers); echo "郵件已傳送"; ?>
PHP Mail 表單
通過 PHP,您能夠在自己的站點製作一個反饋表單。下面的例項向指定的 e-mail 地址傳送了一條文字訊息:
<html> <head> <meta charset="utf-8"> </head> <body> <?php if (isset($_REQUEST['email'])) { // 如果接收到郵箱引數則傳送郵件 // 傳送郵件 $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("[email protected]", $subject, $message, "From:" . $email); echo "郵件傳送成功"; } else { // 如果沒有郵箱引數則顯示錶單 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>
例項解釋:
- 首先,檢查是否填寫了郵件輸入框 如果未填寫(比如在頁面被首次訪問時),輸出 HTML 表單
- 如果已填寫(在表單被填寫後),從表單傳送電子郵件
- 當填寫完表單點選提交按鈕後,頁面重新載入,可以看到郵件輸入被重置,同時顯示郵件傳送成功的訊息
註釋:這個簡易傳送 e-mail,程式碼簡介但存在安全隱患。以下為安全email傳送
防止email注入
html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
function spamcheck($field)
{
// filter_var() 過濾 e-mail
// 使用 FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//filter_var() 過濾 e-mail
// 使用 FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
if (isset($_REQUEST['email']))
{
// 如果接收到郵箱引數則傳送郵件
// 判斷郵箱是否合法
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{
echo "非法輸入";
}
else
{
// 傳送郵件
$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
{
// 如果沒有郵箱引數則顯示錶單
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>
<