麻辣家族討論版版's Archiver

小誌 發表於 2011-4-24 14:04

12-1-1 以mail()函數寄信

[color=DarkRed][b][size=4]12-1-1   以mail()函數寄信[/size][/b][/color]
使用mail()函數來寄信是最容易的事了!此函數格式如下:
mail()函數格式[code]bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])[/code][list]
[*]to參數:收件者的Email,若要同時給多人,請加入「,」逗號分隔收件人。
[*]subject參數:信件的主旨標題。
[*]message參數:信件的內容。
[*]additional_headers參數:電子郵件附加的標頭資訊,非必要參數。
[*]additional_parameters參數:其他電子郵件附加資訊,非必要參數。
[/list]
例如:範例mailtest.php[code]<?
$To="charles@twbts.com.tw"; //請改成您自己的Email
$Subject="mail()函數測試";
$Body="這是信件內容\n這是信件內容\n.....";
$mailret=mail($To,$Subject,$Body);
echo $mailret; //回傳值1代表信件寄送ok
?>[/code]

小誌 發表於 2011-4-24 14:11

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

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

小誌 發表於 2011-4-24 14:12

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

小誌 發表於 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[code]<?
if (isset($_REQUEST["ord"]))
{
//取得填寫的資料
$To="charles@twbts.com.tw"; //改成您自己的MAIL
$From="From" . $_REQUEST["mailfrom"];
$Subject=$_REQUEST["mailsubject"];
$Body=$_REQUEST["mailtext"];
//送出信件
$mailret=mail($To,$Subject,$Body,$From);
if ($mailret==1)
   {
    $msg="感謝您的意見";
   }
   else
   {
    $msg="信件寄送錯誤";
   }
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>感謝您的意見!!</title>
</head>
<body>
<?=$msg;?>
</body>
</html>
<?
}
else
{
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>意見回饋</title>
</head>
<div align=center><center>
<table border=1 bordercolordark=#FFFFFF cellspacing=0 cellpadding=0 bordercolorlight=#800000 bordercolor=#800000>
<tr><td width=100% bgcolor=#800000>
<form method=POST action="<?=$_SERVER["PHP_SELF"];?>" style="margin-top: 0; margin-bottom: 0">
<table border=1 bordercolorlight=#800000 cellspacing=0 cellpadding=0 bordercolordark=#FFFFFF bordercolor=#FFFFFF>
<tr><td width=22% bgcolor=#000080>
<font color=#FFFFFF size=2>寄件者EMAIL</font></td>
<td width=78% ><input type=text name=mailfrom size=46></td></tr>
<tr><td width=22% bgcolor=#000080>
<font color=#FFFFFF size=2>信件主旨</font></td>
<td width=78% ><input type=text name=mailsubject size=46></td></tr>
<tr><td width=22% bgcolor=#000080>
<font color=#FFFFFF size=2>信件內容</font></td>
<td width=78% ><textarea rows=6 name=mailtext cols=45></textarea></td></tr>
<tr><td width=100% colspan=2><p align=center>
<input type=submit value=送出 name=ord></td></tr>
</table></form>
</td>
</tr></table></center></div>
</body>
</html>
<?
}
?>[/code]

toxin 發表於 2012-12-26 15:18

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=18512&ptid=3276]5#[/url] [i]小誌[/i] [/b]


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

         
         
$to = "****@******";
$subject = nl2br($_POST['subject']);


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

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



?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; chaRSet=utf-8">
<title>感謝您的留言!!</title>
<meta http-equiv="refresh" content="3; url=../help.htm">
</head>
<body>
<p>感謝您的留言我們將以最快速度與您聯繫</p>
<p> 三秒鐘之後自動回前一頁 </p>
<p>或<a href="../html/help.htm" style="font-family: '細明體'; font-size: 30px; color: #C00;">按此</a>直接回前一頁</p>
</body>
</html>[/code]先在此感謝大大
祝新年快樂

小誌 發表於 2012-12-26 16:34

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=48951&ptid=3276]6#[/url] [i]toxin[/i] [/b][code]<?
if (isset($_REQUEST["ord"]))
{
//取得填寫的資料
$To="charles@twbts.com.tw"; //改成您自己的MAIL
$From= $_REQUEST["mailfrom"];
$Subject=$_REQUEST["mailsubject"];
$Body=$_REQUEST["mailtext"];
$sHeaders = "MIME-Version: 1.0\r\n" .  "Content-type: text/html; charset=big5\r\n" . "From: $From\r\n";
//送出信件
$mailret=mail($To,$Subject,$Body,$sHeaders);
if ($mailret==1)
   {
    $msg="感謝您的意見";
   }
   else
   {
    $msg="信件寄送錯誤";
   }
?>[/code]

terence0916 發表於 2014-11-2 10:56

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

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供