2012-05-02 55 views
0

對,我是PHP和mySQL的新手,但我有幾個問題,我希望你們中的一些人能夠回答,因爲這使我很困惑。基本的PHP和表格

(我還是會嘗試更多的谷歌閱讀最多見,如果我能找到,而這任何答案是怎麼回事,所以如果我找到了,我會在這裏發表我自己的答案了爲好)

  1. 我想在我的網站上提供反饋表。我正在看PHP的電子郵件表格,但我有點困惑 -

在API上,它說,有人發送電子郵件給我,PHP腳本需要輸入和發送此代碼:

mail(to,subject,message,headers,parameters) 

但是,我知道這個函數裏面沒有「from」參數。這是爲什麼?我怎樣才能找到其他人的電子郵件,並能收到這樣的反饋請求後,通過我自己的電子郵件回覆他/她?

我也在閱讀關於人們將發件人的電子郵件添加到「標題」參數本身的部分。如果我將這個包含在「標題」參數中,郵件系統如何收集發件人的電子郵件? (我問這部分是因爲我的網絡主機在我回復之前提供了一個自動回覆,並且我希望它能夠識別發件人的電子郵件是系統應該自動回覆的電子郵件)

會不會只需在網頁上放一個mailto:[email protected]鏈接就更容易了?

我覺得這幾乎是我現在想要發現的,我有更復雜的問題,但我想我會盡力解決更容易的問題。

+3

From設置在headers參數中。 –

+0

請勿使用「mailto:」。現代瀏覽器確實有mailto處理程序,但大多數舊的打開Outlook和喜歡,大多數像我這樣的人都懶得設置它們。 – Shubham

+1

請勿使用'mailto:',請不要餵食垃圾郵件 – Oerd

回答

6

Check out php mail in the manual

additional_headers(可選)

字符串在電子郵件報頭的末端插入。

這通常用於添加額外的標頭(From,Cc和Bcc)。多個額外的頭文件應該用CRLF(\ r \ n)分隔。從手動

$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
      'Reply-To: [email protected]' . "\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 

示例更新:

您還被問及地址把名字中。爲此,只需將標題中的From:更改爲WEBMASTER NAME <[email protected]>

+1

報價和鏈接到手冊的積分:) – Oerd

+0

這是非常詳細的。我將嘗試發送這樣的基本腳本,看看它在郵件客戶端的外觀如何。 –

0

郵件功能僅用於通過本地配置的或指定的遠程郵件服務器將郵件發送給「人員」,它不能「接收」郵件,您將需要其他功能,例如從郵件服務器讀取數據,這取決於該郵件服務器。

在網頁上放置一個「mailto」鏈接比較容易,但基本上使用「mail()」,您可以製作一個完整的小表格,使您的Web服務器充當電子郵件客戶端只能發送郵件(除非你使用高級功能)。

+0

「高級功能」?請描述一下。我很想知道還有什麼可以在PHP電子郵件腳本里面......如果你想讓我知道,那就是。 –

+0

您可以添加任何可以添加到任何其他PHP腳本的內容 - 例如,您可以將電子郵件寫入數據庫。 – andrewsi

+0

如上所述,您可以通過多種介質,協議或數據庫直接從郵件服務器讀取數據,並且可以使用其他庫(如PHPMailer或甚至更好的SwiftMailer)至少以任何形式發送郵件你喜歡。 – PolishHurricane

0

這是一個基本的表單處理腳本,您可能會發現有幫助。

<?php 

if (isset($_POST) && count($_POST) > 0){ 
    // Form was submitted, process it 

    foreach ($_REQUEST as $k=>$v){ // Loop through values submitted and add them to a message to send to form owner 
     $k = stripslashes($k); 
     $v = stripslashes($v); 
     $message .= "$k: $v\r\n"; 
    } 

    $headers = "From: Name <[email protected]>\r\n"; // This is the FROM address 
    // Uncomment the following line to set From using the value passed to the form 
    // $headers = "From: {$_POST['your_name']} <{$_POST['email']}>\r\n"; // This is the FROM address 

    $ab = mail('[email protected]', 'Contact Submission Form', $message, $headers); // Send the email 

    if ($ab == true){ 
     // Message sent! 
     echo '<strong>Thank you, your message was received.</strong>'; 
    } 

} 

?> 

<form action="" method="post" id="contactform"> 
<label for="your_name">Name:</label> 
<input type="text" name="your_name" id="your_name" class="field" value="" /> 
<label for="email">Email:</label> 
<input type="text" name="email" id="email" class="field" value="[email protected]" /> 
<label for="phone">Phone:<span>(optional)</span></label> 
<input type="text" name="phone" id="phone" class="field" value="(000) 000-0000" /> 
<label for="message">Message:</label> 
<textarea name="message" id="message" class="field textarea" cols="20" rows="5"></textarea> 

<input type="submit" value="Send Message" /> 

</form> 
0

發送電子郵件的SMTP服務器是您的(您的網站)(它可以配置爲遠程服務器)。這就是爲什麼「發件人」字段通常來自表單中的文本字段的原因。

1

如果您在頁面上放置了一個mailto鏈接,當用戶點擊該鏈接時,它將打開用戶的電子郵件客戶端,並且他們可以向您發送電子郵件。缺點是垃圾郵件發送者可以輕鬆訪問頁面上的電子郵件地址。

如果您使用PHP表單,那麼您的電子郵件地址將保持隱藏 - 它被隱藏在代碼中。不利的一面是,它的設置更爲複雜。

由於上面提到了Set Sail Media,您可以在headers參數中指定From地址。如果沒有設置,那麼它將使用Web服務器運行的進程的詳細信息(例如,[email protected])。不是最有用的,但通常不是問題。

如果你想知道用戶的電子郵件地址是什麼,唯一的辦法是要求他們作爲表格的一部分。你不能自動拿起它。

+0

對,要獲得電子郵件地址,我必須在表單中輸入內容。我現在對頭文件有所瞭解,在頭文件參數部分應該有一個「From:$ sender」類聲明。 –

+0

我傾向於使用頭文件中的通用From地址發送來自PHP的電子郵件,並且包含用戶作爲電子郵件正文的一部分輸入的電子郵件地址。我們的電子郵件服務器被設置爲忽略沒有有效的發件人地址的電子郵件,因此如果您的用戶在他們的地址中輸入錯字,您將永遠不會收到電子郵件,甚至不會知道發送的郵件。無意中輸入'[email protected]'非常容易 - 你可以計算出它應該是什麼,但服務器不能。 – andrewsi

+0

我明白了。對,人爲錯誤不是完全可以通過計算機來計算的。 –