用郵件來傳送表單資料

2022-04-08 11:52:50 字數 3299 閱讀 1625

使用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 提交表單...