Board logo

標題: 12-2-3 自動送信程式 [打印本頁]

作者: 小誌    時間: 2011-4-24 14:39     標題: 12-2-3 自動送信程式

12-2-3   自動送信程式
當問卷填寫者在in.php程式網頁中按下『送出問卷』按鈕後,表單中的資料就會送交自動送信程式sentmsg.php處理,sentmsg.php程式將會把問卷填寫結果與填寫者的資料以E-Mail自動傳送的方式寄送至管理者或是問卷調查主持人的手中。

在信件傳送之前,我們必須先設定mail()函數的收件人(To)、寄件人(From)、信件主旨(Subject)與信件內容(Body)等四項屬性,信件主旨我們可以自行設定為固定文字,收件者則為管理者或是問卷調查主持人的E-Mail帳號(這也是固定的),信件傳送的寄件者與信件內容(問卷結果)則是隨著問卷填寫者所填寫的內容而變動。
  1. //建立郵件基本項目       
  2.     //以問卷程式網頁中所填寫的E-mail為寄件者
  3.     $From= "From: " . $_REQUEST["Email"];
  4.     //收件者為管理員或問卷調查主持人的E-Mail
  5.     $To= $_REQUEST["Email"];
  6.     //信件主題,通常為問卷的主題
  7.     $Subject="網路問卷調查";
  8.     //信件內容
  9.     $Body = "網友" . $_REQUEST["Name"] . "問卷意見:" . "\r\n"; //以下略….
複製代碼
請觀察上列這段程式敘述,您可以清楚的看到我們From(寄件者郵件信箱)屬性值是設定為:問卷填寫者在in.php程式網頁中Email欄位中所填寫的郵件信箱,這麼做最主要的目的是為了讓管理者或是問卷調查主持人能夠即時的以E-Mail方式回應問卷填寫者所提出的意見。



提示!!
本範例中From(寄件者郵件信箱)與To(收件者郵件信箱)屬性值設定是相同的,也就是自己寄信給自己,在實際應用時請自行更改To(收件者郵件信箱)屬性值設定。
作者: 小誌    時間: 2011-4-24 14:40

在信件內容的部分,除了要有問卷填寫者所選擇的答案與意見外,本範例中還加上相對應的問卷題目本文,如果不加上原始題目的內容,我們怎能知道答案的意義?
  1. //列出問卷題目及問卷填寫者的答案
  2.      $I=1;
  3.     while (($fielddatas=mysql_fetch_array($datalist)))
  4.     {
  5.      //列出問卷題目
  6.      $Body = $Body . $I . ". " . $fielddatas["題目"] . "\r\n";
  7.      //取得相對應於題目的問卷答案
  8.      $Ans=$_REQUEST["No" . $fielddatas["題號"]];
  9.      //列出答案
  10.      $Body = $Body . $Ans . "\r\n";
  11.      $I++;
  12.     }
  13.    
  14. // 寄出信件
  15.     mail($To ,$Subject ,$Body ,$From);
複製代碼
1.使用While迴圈敘述配合改變作用中資料錄位置與提取資料的mysql_fetch_array()函數,將所有的問卷題目自資料庫資料表中讀取出來。
2.利用$_REQUEST[“表單欄位”]敘述取得來自問卷程式網頁中相對於題目的答案欄位屬性值(Value)。
3.呼叫mail()函數將信件寄出。



提示!!
程式碼中的「\r\n」為一換行符號,其作用就是將我們的信件內容分段顯示!若未加上此換行符號,則我們的信件內容將會全部串接成一個段落。
作者: 小誌    時間: 2011-4-24 14:40

sentmsg.php
  1. <?
  2. //連結MySQL Server
  3.     $conn = mysql_connect("localhost", "root", "12345a");
  4. //選擇資料庫
  5.     mysql_select_db("QUESTION", $conn);
  6. //指定提取資料的校對字元表
  7.     mysql_query("set character set big5");  
  8. //建立查詢字串
  9. $SQL="Select * From question Order By 題號";
  10. //將回傳結果存放於變數中
  11. $datalist=mysql_query($SQL);
  12.                         
  13. //建立郵件基本項目       
  14.     //以問卷程式網頁中所填寫的E-mail為寄件者
  15.     $From= "From: " . $_REQUEST["Email"];
  16.     //收件者為管理員或問卷調查主持人的E-Mail
  17.     $To= $_REQUEST["Email"];
  18.     //信件主題,通常為問卷的主題
  19.     $Subject="網路問卷調查";
  20.     //信件內容
  21.     $Body = "網友" . $_REQUEST["Name"] . "問卷意見:" . "\r\n";
  22.    
  23. //列出問卷題目及問卷填寫者的答案
  24.      $I=1;
  25.     while (($fielddatas=mysql_fetch_array($datalist)))
  26.     {
  27.      //列出問卷題目
  28.      $Body = $Body . $I . ". " . $fielddatas["題目"] . "\r\n";
  29.      //取得相對應於題目的問卷答案
  30.      $Ans=$_REQUEST["No" . $fielddatas["題號"]];
  31.      //列出答案
  32.      $Body = $Body . $Ans . "\r\n";
  33.      $I++;
  34.     }
  35.    
  36. // 寄出信件
  37.     mail($To ,$Subject ,$Body ,$From);
  38. ?>
  39. <html>
  40. <head>
  41. <meta http-equiv="Content-Type" content="text/html; chaRSet=big5">
  42. <title>感謝您的意見!!</title>
  43. </head>
  44. <body>
  45. 感謝您的意見
  46. </body>
  47. </html>
複製代碼

作者: 小誌    時間: 2011-4-24 14:41

使用CDONTS物件寄送問卷結果
為了不顧此薄彼,筆者也寫了利用CDONTS_NewMail物件寄送問卷結果的範例程式:「sentmsg_cdonts.php」,程式設計原理與sentmsg.php相同,因此就不多言了,此範例程式請配合「in_cdonts.php」使用。
  1. <?
  2. //連結MySQL Server
  3.     $conn = mysql_connect("localhost", "root", "12345a");
  4. //選擇資料庫
  5.     mysql_select_db("QUESTION", $conn);
  6. //指定提取資料的校對字元表
  7.     mysql_query("set character set big5");  
  8. //建立查詢字串
  9. $SQL="Select * From question Order By 題號";
  10. //將回傳結果存放於變數中
  11. $datalist=mysql_query($SQL);

  12. //建立信件傳送物件
  13. $CDONTS = new COM("CDONTS.NewMail");

  14. //建立郵件基本項目       
  15.     //以問卷程式網頁中所填寫的E-mail為寄件者
  16.     $CDONTS->From=$_REQUEST["Email"];
  17.     //收件者為管理員或問卷調查主持人的E-Mail
  18.     $CDONTS->To= $_REQUEST["Email"];
  19.     //信件主題,通常為問卷的主題
  20.     $CDONTS->Subject="網路問卷調查";
  21.     //信件內容
  22.     $Body = "網友" . $_REQUEST["Name"] . "問卷意見:";
  23.    
  24. //列出問卷題目及問卷填寫者的答案
  25.      $I=1;
  26.     while (($fielddatas=mysql_fetch_array($datalist)))
  27.     {
  28.      //列出問卷題目
  29.      $Body =$Body . "\r\n" . $I . ". " . $fielddatas["題目"] . "\r\n";
  30.      //取得相對應於題目的問卷答案
  31.      $Ans=$_REQUEST["No" . $fielddatas["題號"]];
  32.      //列出答案
  33.      $Body = $Body . $Ans ;
  34.      $I++;
  35.     }

  36.     $CDONTS->Body=$Body;
  37. // 寄出信件
  38.     $CDONTS->Send();
  39. ?>
  40. <html>
  41. <head>
  42. <meta http-equiv="Content-Type" content="text/html; chaRSet=big5">
  43. <title>感謝您的意見!!</title>
  44. </head>
  45. <body>
  46. 感謝您的意見
  47. </body>
  48. </html>
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)