2016-08-21 109 views
0

我一直在嘗試這一整天,但我無法弄清楚如何發送電子郵件從我的HTML聯繫人表單中包含的信息從表格到我的電子郵件地址。即時通訊新的PHP。使用php從html表單發送電子郵件

我試圖通過上傳到免費的虛擬主機運行此。我收到消息「成功!」當我按下我的HTML表單上的提交按鈕,但實際上沒有發送電子郵件。

任何幫助表示讚賞。

PHP腳本:

<?php 

//Subject 
$subject ="Contact Form Submission"; 

// Name 
$name =$_POST['InputName']; 

// Message 
$message =$_POST['InputMessage']; 

//Mail of Sender 
$email =$_POST['InputEmail']; 

//From 
$header = "From:$name<$email>"; 

$send_contact=mail("[email protected]",$subject,$message,$header); 

//Check if mail was sent 
if($send_contact){ 
echo "Success!"; 
} 
else { 
echo "Error!"; 
} 
?> 

編輯:試錯的一整天后想通了。問題出在我使用的免費網頁主機上。更改主機和代碼開始正常工作。希望這有助於未來的人。感謝所有的幫助。

+0

你還是沒有弄清楚? – Bisquitue

+0

@Bisquitue仍然試圖找出它 –

回答

1

我有一個很好的主意,爲什麼你的代碼不工作。它發生在很久以前。爲什麼你的代碼是不工作的原因是:

  • 當你通過「從」頁眉,PHP預計現有的電子郵件帳戶
    服務器。 例如:$headers = 'From: [email protected]';
  • 所以你要做的第一件事就是在你的服務器上創建一個電子郵件帳戶。然後將From置於header到您剛創建的電子郵件地址。
  • $headers中的From字段不是您認爲的From字段。
  • <?php
  • $email = $_POST["InputEmail"];
  • $subject = $_POST["InputSubject"];
  • $message = "From: ".$email.", ".$_POST["InputMessage"]; //你從輸入表格把電子郵件地址在這裏
  • $headers = 'From: [email protected]'; //這裏是其中U要發送的電子郵件中指定的電子郵件地址。(即你的服務器的電子郵件地址)
  • mail($to, $subject, $message, $headers)
  • ?>

我敢肯定,這將做的工作:)

+0

嗨!你的解釋很有道理。我完全照抄你所說的。用我的免費虛擬主機提供商創建一個電子郵件帳戶我測試了腳本,但電子郵件仍未發送出去。但問題是我可以從[email protected]發送電子郵件到我的Gmail地址,但不是從我的PHP腳本。有任何想法嗎? –

+0

做一點測試: 首先在使用表單值之前測試這個(帶字符串): ' $ email =「[email protected]」; $ to =「[email protected]」; $ subject =「test subject」; $ message =「test message」; $ headers ='From:[email protected]er.com'; 郵件($ to,$ subject,$ message,$ headers); ' 不改變以上任何東西。只需複製並粘貼,然後用您的gmail帳戶和**[email protected]**只替換$到變量。如果這樣做,那麼問題就解決了你的PHP腳本。 –

+0

好吧,我剛剛複製並粘貼了你所說的內容,但仍然沒有發送電子郵件。用我使用的PHP腳本和HTML表單代碼更新了我的第一篇文章。我真的不知道這裏出了什麼問題。 –

0

對此有所瞭解。

我改變你周圍一點點$header變量,這樣,而不是設置電子郵件作爲$電子郵件,它實際上會通過在表單中​​輸入的發佈電子郵件。這也適用於名稱。

我也做了這樣的事情,以便通過if語句的參數傳遞郵件功能,而不是設置新變量。

$headers = "From: " . $name . "<" . $email . ">"; // notice new concatenation 

if(mail("[email protected]", "Contact Form Submission", $message, $headers)){ 
    // success message 
} else { 
    // error message 
} 

真的希望這有助於! :)

+0

嗨,我測試了它,它似乎仍然工作不幸。你有任何其他提示? –

0

嘗試增加空格「=」這可能是問題後,

如果不工作,你可以嘗試使用這個

<?php 
    $emailvariable = $_POST['InputEmail'] 


    $to  = '[email protected]'; 
    $subject = "Form" 
    $message = $_POST['InputMessage']; 
    $headers = "From: $emailvariable"; 

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

希望這有助於

+0

我嘗試使用您的解決方案,但仍然沒有發送電子郵件。我似乎無法弄清楚這個問題。 –

+0

你是否託管你的網站與域名等。因爲如果你不是你不能使用郵件服務器發送郵件。因此,如果您使用的是wamp或mamp,則無法執行此操作,如果您在網站上託管它,請嘗試從$ _POST ['InputEmail']中刪除大寫字母 – Bisquitue

+0

Yup即使用免費域名託管在帶有域名的網站上虛擬主機提供商。你的意思是像$ _post ['inputemail']? –