使用php 向乙個指定的郵箱傳送資料是非常簡單的一件事情,以至於你可能會想,為什麼人們不每天用
它呢?php 提供的mail()函式使用四個引數:收信人,主題,郵件資訊和附加的郵件頭。通過這個簡短的教
程,你將學會如何設定這些引數的值,然後傳送一封郵件和返回乙個確認頁面。我們將通過兩步來實現:準
備表單檔案和編寫php 程式處理表單資料,傳送郵件和返回結果。注意:在這個例子中,php 檔名字尾用
".php3"。如果你使用的php 檔名字尾與此處不同,如".phtml",".php",請做相應的修改。
第一步,使用你常用的編輯器建立表單的html頁面。就我個人來說,我習慣於使用"show/do" 方式處理
多步的應用:如果乙個檔名以"show_" 開頭,它通常是乙個表單檔案,如果以"do_" 開頭則通常是php 代
碼。所以在這裡我建立的檔案為"show_form.html",它包含有兩個文字域和乙個多行文字域,如下所示:
e-mail form
你的名字:
你的郵件位址:
信件內容:
讓我們一部分一部分地檢視這段**。首先表單的動作(action)被設為"do_sendform.php3"。這個檔案
就是你將要處理表單資料和傳送郵件的程式檔案。然後我們使用了兩個文字域和乙個多行文字域。預設的,
輸入域(input field) 的名字作為傳遞給"do_sendform.php3"的變數名。所以,當表單被傳送後,我們將傳
遞三個變數給"do_sendform.php3":$sender_name,$sender_email和$message。 在這個教程中,你將會給
你自已發郵件,所以收信人的信箱和郵件主題都將在php 指令碼中程式設計實現。
是不是感到很簡單?ok,讓我們來看一看php **吧。在你的編輯器裡建立"do_sendform.php3"檔案。
在開始處加入**:
<?php_track_vars ?>
如果你不知道變數跟蹤選項(track_vars)是否開啟,加入這行語句將可以保證至少在這個指令碼中,變數
跟蹤是允許的。
下面就要將表單資料連線成乙個長字串。你可以在適當的地方加入回車(\n)和製表符(\t)。在你的php
**加入下面的片段:
<?php
$msg = "sender name:\t$sender_name\n";
在這行裡,你建立了$msg變數用來儲存訊息串,首先加入了"sender name:"字串,跟著是$sender_name
的值和乙個回車符。當這個指令碼被執行後,變數$sender_name將被輸入到表單中的文字替換。
繼續在$msg的後面追加新的字串。注意當在原來的變數後面加入新的字串時,可以使用 .= 操作符。
$msg .= "sender e-mail:\t$sender_email\n";
$msg .= "message:\t$message\n\n";
最後一行包含了兩個回車符。做到這裡,你建立了乙個很長的字串,就象:
$msg = "sender name:\t$sender_name\nsender e-mail:\t$sender_email\nmessage:\t$messsage\n\n";
不管怎麼樣,當你不得不查詢某一行文字進行修改時,使用連線符和用空白來分隔你的**可以讓以後
的修改變得容易一些。記住,空白是你的朋友... 並且會讓那些不得不編輯你的東西的夥計們認為你是乙個
受歡迎的人。
在這個教程開始的時候,我已經說過mail()函式有四個引數:收信人,主題,郵件資訊和附加的郵件頭。
現在在你的**裡,你可以建立變數來控制它們的值 - recipient(收信人),subject(主題)和mailheaders(
郵件頭);
$recipient = "[email protected]";
$subject = "web site feedback";
很明顯,在這裡使用了你自已的郵箱和你想要的任意主題。接著,建立乙個郵件頭的變數。一些基本的
郵件頭是"from"和"reply-to"。建立乙個名為$mailheaders的變數,象下面方式加入:
$mailheaders = "from: my web site <> \n";
$mailheaders .= "reply-to: $sender_email\n\n";
在"from"頭中使用"<>"來表示乙個空的郵件位址。你可以象"reply-to"頭一樣把變數$sender_name放在
"from"頭中,但是如果使用者沒有錄入sender_name欄位,乙個空的"from"頭將不能通過你的郵件伺服器。最好
填一些一般的東西,使用"reply-to"頭做為傳送者的回覆郵箱位址。
現在你已經有了全部mail()函式所需要的東西,現在將mail()函式放入你的**:
mail($recipient, $subject, $msg, $mailheaders);
最後,你應該返回一些資訊給使用者,通知他們表單已經被傳送了。另外說一下,你應該考慮到可能某個
人會坐在這裡,點選百萬次傳送按鈕,使你的郵箱癱瘓。在你的php **中加入下面幾行:
echo "表單已經傳送完畢!";
echo "";
echo "反饋表傳送完畢
"; echo "";
?>
使用變數$sender_name作為返回給使用者螢幕的內容,作為一種客戶化的輸出。或者,也許是作為一種友
好的表示。在任何情況下,應該讓使用者感到友好,這樣他們才會回頭訪問你的站點。
你全部的php **看上去應該象下面:
<?php
$msg = "sender name:\t$sender_name\n";
$msg .= "sender e-mail:\t$sender_email\n";
$msg .= "message:\t$message\n\n";
$recipient = "[email protected]";
$subject = "web site feedback";
$mailheaders = "from: my web site <> \n";
$mailheaders .= "reply-to: $sender_email\n\n";
mail($recipient, $subject, $msg, $mailheaders);
echo "表單已經傳送完畢!";
echo "";
echo "反饋表傳送完畢
"; echo "";
?>
當然你可以根據你的使用環境自由地替換標籤的名字,空白和其它專案。
用socket來傳送郵件
以前用vb時,記得有個mail控制項,後來接觸到了cdo.messages這個玩意,發郵件是蠻方便,那還是在vbs的情況下,後來看了下php,perl,發現發郵件乙個函式就可以了,呵呵,那麼這些背後的細節是什麼呢,還是用socket來揭示下吧 郵件傳送離不開一樣東西,smtp,即簡單郵件傳輸協議,對...
使用XMLHTTP傳送超長XML表單資料
如果這個xml大於90,000字元的maxlen,那麼這段 就會建立多個隱藏的input 輸入 元素,並把值的屬性設定為90,000個字元的xml資料,或者設定為xml尾部的某個值,從而將這個資料分割成多個部分。如果這個xml的大小小於maxlen,那麼這段 就只會建立乙個input並相應地設定值。...
dede 提交表單 傳送郵件
第一步 要到dede後台設定好郵箱的資料,並且確定所用的郵箱開啟了smtp 第二步 找到 plus diy.php在 cce query insert into id ifcheck addvar values null,0 addvalue cce 下加入以下 cce mailtitle 提交表單...