Board logo

標題: 12-1-1 以mail()函數寄信 [打印本頁]

作者: 小誌    時間: 2011-4-24 14:04     標題: 12-1-1 以mail()函數寄信

12-1-1   以mail()函數寄信
使用mail()函數來寄信是最容易的事了!此函數格式如下:
mail()函數格式
  1. bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])
複製代碼

例如:範例mailtest.php
  1. <?
  2. $To="[email protected]"; //請改成您自己的Email
  3. $Subject="mail()函數測試";
  4. $Body="這是信件內容\n這是信件內容\n.....";
  5. $mailret=mail($To,$Subject,$Body);
  6. echo $mailret; //回傳值1代表信件寄送ok
  7. ?>
複製代碼

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

使用mail()函數寄信,基本上只需給定收件人、主旨、信件內容即可,下圖即為範例mailtest.php所寄出的信件:
[attach]5793[/attach]
圖12-1  mailtest.php所寄出的信件。

在上圖中,我們可以發現信件的寄件者是系統預設值,那人家如何回信給您?這時候,我們將用到mail()函數的第四個參數「additional_headers」:範例mailtest2.php
  1. <?
  2. $To="[email protected]";
  3. $Subject="mail()函數測試2";
  4. $Body="這是信件內容\n這是信件內容\n.....";
  5. $From="From: [email protected]";
  6. $mailret=mail($To,$Subject,$Body,$From);
  7. echo $mailret; //回傳值1代表信件寄送ok
  8. ?>
複製代碼

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

如果要以暱稱或姓名代替郵件地址為顯示內容,可以將郵件地址以「< >」括起來,並於「< >」前方放置您想顯示的文字,但此方法僅限「寄件者有效」,例如:範例mailtest3.php
  1. <?
  2. $To="[email protected]";
  3. $Subject="mail()函數測試3";
  4. $Body="這是信件內容\n這是信件內容\n.....";
  5. $From="From: 居易<[email protected]>";
  6. $mailret=mail($To,$Subject,$Body,$From);
  7. echo $mailret; //回傳值1代表信件寄送ok
  8. ?>
複製代碼
若您希望收件者也能以暱稱或姓名代替郵件地址為顯示內容,則必須在「additional_headers」參數中再加入一次收件者資訊,郵件地址同樣以「< >」括起來,並於「< >」前方放置您想顯示的文字,例如:範例mailtest4.php
  1. <?
  2. $To="[email protected]";
  3. $Subject="mail()函數測試4";
  4. $Body="這是信件內容\n這是信件內容\n.....";
  5. $From="From: 居易 <[email protected]>";
  6. $ToName="To: 小魚 <[email protected]>";
  7. $Head=$From . "\r\n" . $ToName;
  8. $mailret=mail($To,$Subject,$Body,$Head);
  9. echo $mailret; //回傳值1代表信件寄送ok
  10. ?>
複製代碼

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

由於我們的電子郵件附加的標頭資訊有兩個,所以兩者之間必須加入「\r\n」分隔符號,下圖為範例mailtest4.php所送出的郵件,請注意看到寄件者與收件者皆以暱稱或姓名代替郵件地址為顯示內容:
[attach]5794[/attach]
圖12-2  mailtest4.php所寄出的信件。

很清楚了喔!現在我們就來製作一個表單寄信程式,當我們在填寫信件內容時畫面如下圖:
[attach]5795[/attach]
圖12-3   mailform.php:填寫信件內容。

當我們按下表單中的「送出」按鈕後,表單資料送給mailform.php程式自己處理,將信件送出後畫面如下圖:
[attach]5796[/attach]
圖12-4  mailform.php:信件送出後。
作者: 小誌    時間: 2011-4-24 14:14

mailform.php
  1. <?
  2. if (isset($_REQUEST["ord"]))
  3. {
  4. //取得填寫的資料
  5. $To="[email protected]"; //改成您自己的MAIL
  6. $From="From" . $_REQUEST["mailfrom"];
  7. $Subject=$_REQUEST["mailsubject"];
  8. $Body=$_REQUEST["mailtext"];
  9. //送出信件
  10. $mailret=mail($To,$Subject,$Body,$From);
  11. if ($mailret==1)
  12.    {
  13.     $msg="感謝您的意見";
  14.    }
  15.    else
  16.    {
  17.     $msg="信件寄送錯誤";
  18.    }
  19. ?>
  20. <html>
  21. <head>
  22. <meta http-equiv="Content-Type" content="text/html; charset=big5">
  23. <title>感謝您的意見!!</title>
  24. </head>
  25. <body>
  26. <?=$msg;?>
  27. </body>
  28. </html>
  29. <?
  30. }
  31. else
  32. {
  33. ?>
  34. <html>
  35. <head>
  36. <meta http-equiv="Content-Type" content="text/html; charset=big5">
  37. <title>意見回饋</title>
  38. </head>
  39. <div align=center><center>
  40. <table border=1 bordercolordark=#FFFFFF cellspacing=0 cellpadding=0 bordercolorlight=#800000 bordercolor=#800000>
  41. <tr><td width=100% bgcolor=#800000>
  42. <form method=POST action="<?=$_SERVER["PHP_SELF"];?>" style="margin-top: 0; margin-bottom: 0">
  43. <table border=1 bordercolorlight=#800000 cellspacing=0 cellpadding=0 bordercolordark=#FFFFFF bordercolor=#FFFFFF>
  44. <tr><td width=22% bgcolor=#000080>
  45. <font color=#FFFFFF size=2>寄件者EMAIL</font></td>
  46. <td width=78% ><input type=text name=mailfrom size=46></td></tr>
  47. <tr><td width=22% bgcolor=#000080>
  48. <font color=#FFFFFF size=2>信件主旨</font></td>
  49. <td width=78% ><input type=text name=mailsubject size=46></td></tr>
  50. <tr><td width=22% bgcolor=#000080>
  51. <font color=#FFFFFF size=2>信件內容</font></td>
  52. <td width=78% ><textarea rows=6 name=mailtext cols=45></textarea></td></tr>
  53. <tr><td width=100% colspan=2><p align=center>
  54. <input type=submit value=送出 name=ord></td></tr>
  55. </table></form>
  56. </td>
  57. </tr></table></center></div>
  58. </body>
  59. </html>
  60. <?
  61. }
  62. ?>
複製代碼

作者: toxin    時間: 2012-12-26 15:18

回復 5# 小誌


    請問一下我內文的部分因為要輸入資料
可是在對方輸入中有按enter
所以內文會有<br /> 取代enter的部份
應該是因為寄送方式為txt
要怎麼改成html格式
代碼如下
  1. <?php

  2.          
  3.          
  4. $to = "****@******";
  5. $subject = nl2br($_POST['subject']);


  6. $txt1 ="聯絡人:" .nl2br($_POST['sendname']). "\r\n" ."聯絡電話:".nl2br($_POST['sendphone']). "\r\n" ."救助內容:".nl2br($_POST['sendbody']);
  7. $headers = "From: ***@*******" . "\r\n" .
  8. "CC: ***@******";

  9. mb_internal_encoding("utf-8");//設定編碼方式  
  10. mb_send_mail($to,$subject,$txt1,$headers);//寄出信件



  11. ?>
  12. <html>
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; chaRSet=utf-8">
  15. <title>感謝您的留言!!</title>
  16. <meta http-equiv="refresh" content="3; url=../help.htm">
  17. </head>
  18. <body>
  19. <p>感謝您的留言我們將以最快速度與您聯繫</p>
  20. <p> 三秒鐘之後自動回前一頁 </p>
  21. <p>或<a href="../html/help.htm" style="font-family: '細明體'; font-size: 30px; color: #C00;">按此</a>直接回前一頁</p>
  22. </body>
  23. </html>
複製代碼
先在此感謝大大
祝新年快樂
作者: 小誌    時間: 2012-12-26 16:34

回復 6# toxin
  1. <?
  2. if (isset($_REQUEST["ord"]))
  3. {
  4. //取得填寫的資料
  5. $To="[email protected]"; //改成您自己的MAIL
  6. $From= $_REQUEST["mailfrom"];
  7. $Subject=$_REQUEST["mailsubject"];
  8. $Body=$_REQUEST["mailtext"];
  9. $sHeaders = "MIME-Version: 1.0\r\n" .  "Content-type: text/html; charset=big5\r\n" . "From: $From\r\n";
  10. //送出信件
  11. $mailret=mail($To,$Subject,$Body,$sHeaders);
  12. if ($mailret==1)
  13.    {
  14.     $msg="感謝您的意見";
  15.    }
  16.    else
  17.    {
  18.     $msg="信件寄送錯誤";
  19.    }
  20. ?>
複製代碼

作者: terence0916    時間: 2014-11-2 10:56

請問小誌
mail()有辦法利用條件式寄信嗎?
當條件成立只寄一次信?
謝謝!!




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