2012-12-24 26 views
1

我想要的聯繫人添加到我的網站,所以我在互聯網上搜索爲例 ,我發現這個例子:從我的聯繫形式發送電子郵件不起作用

http://www.html-form-guide.com/contact-form/php-email-contact-form.html 

我跟隨這個例子,但它沒有工作,我的郵箱沒有電子郵件,但它提交後將我重定向到謝謝頁面。

我已經改變了接觸外形handler.php到

<?php 
$errors = ''; 
$myemail = '[email protected]';//<-----Put Your email address here. 
if(empty($_POST['name']) || 
    empty($_POST['email']) || 
    empty($_POST['message'])) 
{ 
    $errors .= "\n Error: all fields are required"; 
} 

$name = $_POST['name']; 
$email_address = $_POST['email']; 
$message = $_POST['message']; 

if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
$email_address)) 
{ 
    $errors .= "\n Error: Invalid email address"; 
} 

if(empty($errors)) 
{ 
    $to = $myemail; 
    $email_subject = "Contact form submission: $name"; 
    $email_body = "You have received a new message. ". 
    " Here are the details:\n Name: $name \n Email: $email_address \n Message \n $message"; 

    $headers = "From: $myemail\n"; 
    $headers .= "Reply-To: $email_address"; 

    mail($to,$email_subject,$email_body,$headers); 
    //redirect to the 'thank you' page 
    header('Location: contact-form-thank-you.html'); 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Contact form handler</title> 
</head> 

<body> 
<?php 
echo nl2br($errors); 
?> 

</body> 
</html> 

我contact.html文件:

<form method="POST" name="contactform" action="contact-form-handler.php"> 
      <p> 
       <label for='name'>Your Name:</label> <br> 
       <input type="text" name="name"> 
      </p> 
      <p> 
       <label for='email'>Email Address:</label> <br> 
       <input type="text" name="email"> <br> 
      </p> 
      <p> 
       <label for='message'>Message:</label> <br> 
       <textarea name="message"></textarea> 
      </p> 
       <input type="submit" value="Submit"><br> 
       </form> 
<script language="JavaScript"> 
// Code for validating the form 
// Visit http://www.javascript-coder.com/html-form/javascript-form-validation.phtml 
// for details 
var frmvalidator = new Validator("contactform"); 
frmvalidator.addValidation("name","req","Please provide your name"); 
frmvalidator.addValidation("email","req","Please provide your email"); 
frmvalidator.addValidation("email","email","Please enter a valid email address"); 
</script> 

和onther頁接觸 - 成型 - 罐you.html

<div id="body"> 
     <div class="content"> 
      <h1>Thank you!</h1> 
Thank you for submitting the form. We will contact you soon! 


     </div> 
</div> 

我用過的程序是:htmp,wampserver,php 5.3.10

更新

我開我的php.ini,這是我的發現:

[mail function] 
    ; For Win32 only. 
    ; http://php.net/smtp 
    SMTP = smtp.yahoo.fr 
    ; http://php.net/smtp-port 
    smtp_port = 25 

    ; For Win32 only. 
    ; http://php.net/sendmail-from 
    sendmail_from = [email protected] 

我已經記錄到日誌/ appache_error ANS我發現了這個錯誤:

[Thu Dec 27 10:11:51 2012] [error] [client 127.0.0.1] PHP Warning: mail() [<a href='function.mail'>function.mail</a>]: SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. dm3sm56414314wib.9 in C:\\wamp\\www\\MyWebsitname\\en\\contact-form-handler.php on line 32, referer: http://localhost/MyWebsitname/en/contact.html 

所以我在互聯網上搜索,我發現我可以添加

ini_set("SMTP","ssl://smtp.gmail.com"); 
ini_set("smtp_port","465"); 

但問題是一樣的嗎?

+0

是的,請加在正在發送的電子郵件的代碼和PHP的郵件配置。 – Skatox

+0

你需要在你的服務器上配置你的郵件 –

+0

看起來你的檢查缺失值是失敗的。轉儲$ _POST的內容並查看原因。 – ethrbunny

回答

0

我想你錯過了電子郵件配置。

您可以在php.ini配置此,在這裏看到一個例子:http://www.quackit.com/php/tutorial/php_mail_configuration.cfm

您將需要一個SMTP服務器,要做到這一點最簡單的方法是使用免費服務像山魈(HTTP://山魈的.com /)。註冊一個帳戶,您將看到SMTP詳細信息。在你的php.ini中輸入這些詳細信息,電子郵件將通過SMTP服務器從mandril發送。

或者,您可以建立一個本地的SMTP服務器,但我想這將是一個很大更多的麻煩:)

+0

我已更新我的文章 – Julie

+0

你有本地主機上運行的SMTP服務器嗎? – cowls

1

有很多原因,電子郵件()函數不工作有時,請閱讀這篇文章 PHP mail() doesn't work

我強烈建議使用PHPMailer的圖書館,它是免費的,易於使用,它比原生的PHP mail()函數更可靠

+1

你錯過了一個非常重要的觀點。 OP正在使用Gmail SMTP。'mail()'函數不支持它的認證和加密。 – Raptor

相關問題