2013-08-29 99 views
0

我無法將信息從我的PHP表單發送到電子郵件地址。我對PHP相當陌生。代碼如下:表單不發送電子郵件

if(isset($_POST['submit'])) { 
$name = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 
$myEmail = "[email protected]"; 

if (empty($name) || empty($subject) || empty($message)) { 
    $error = 'Please make sure to double check the fields for errors.'; 
} elseif (!filter_var($email1, FILTER_VALIDATE_EMAIL)) { 
    $error = 'Email is incorrect'; 
} else { 
    $headers .= "From: $email\r\n"; 
    $headers .= "Reply-To: $myEmail\r\n"; 
    $headers .= "Return-Path: $myEmail\r\n"; 
    $headers .= "CC: $email\r\n"; 
    $headers .= "BCC: $myEmail\r\n"; 

    if (mail($to,$subject,$message,$headers)) { 
    $to = $myEmail; 
    $subject = $subject; 
    $message = $message; 
    $from = $email; 
    $headers = "From:" . $from; 
    echo "Mail Sent."; 
    } else { 
    echo 'failure to send email'; 
    } 
} 
} 

HTML:

<form id="contactForm" class="form-horizontal" action="<?php echo get_option('home'); ?>/email/" method="POST"> 
    <input id="name" name="name" placeholder="Full Name" type="text"> 
    <input id="subject" name="subject" placeholder="Subject" type="text"> 
    <input id="email" name="email" placeholder="Email Address" type="email"> 
    <textarea placeholder="Your Message" id="message" name="message" rows="10"></textarea> 
    <input type="submit" value="SEND" class="btn btn-primary btn-block"> 
</form> 

注:我使用的WP CMS。

+1

看起來我好像你要發送兩次郵件 – DevZer0

+0

表單的默認方法是'GET'。你需要在你的'

'標籤中添加'method ='POST'',以便在PHP腳本中使用'$ _POST'。 –

回答

1

您的表單缺少method屬性。編輯代碼,以便您的表單有method POST。

<form id="contactForm" class="form-horizontal" action="contact.tpl.php" method="POST"> 

第二次刪除您的mail函數調用之一。如果不是你的電子郵件將被髮送兩次

+1

'type'或'method'? –

+0

@Micheal天哪謝謝你,我今天出來 – DevZer0

+0

沒問題。看看代碼,看起來像第二個郵件電話發送給他自己的電子郵件(手動抄送?) –

0

更改code.It由2倍發送郵件

$to = $myEmail; 
$subject = $subject; 
$message = $message; 
$from = $email; 
$headers = "From:" . $from; 

if (mail($to,$subject,$message,$headers)) { 

    echo "Mail Sent."; 
} else { 
    echo 'failure to send email'; 
} 

而且你形式方法就像POST

<form id="contactForm" class="form-horizontal" action="contact.php" method="post"> 

而且最主要的文件名稱是contact.phpcontact.tpl不是contact.tpl.php

+0

我認爲他的意思是發送電子郵件兩次。一旦在'$ to'和一次給自己的收件人(即'$ myEmail') –

+0

我更新了我的代碼,它仍然不能正常工作... – Shivam

+0

您是否獲得'POST'變量..? – Gautam3164

0

有一個.期間)從第一個$headers變量聲明中缺失。可能有幫助。

0

表單方法POST在窗體標記中缺失。

<form id="contactForm" class="form-horizontal" action="contact.tpl.php" method="post"> 
0

你有錯誤的參數$tomail()

嘗試

.... 
.... 
//// use $email here not $to which is not initialised yet 
if (mail($email,$subject,$message,$headers)) { 

是地方

if (mail($to,$subject,$message,$headers)) { 
+0

已更改,仍未收到我收件箱中的任何電子郵件... – Shivam

+0

檢入垃圾郵件或垃圾文件夾。如果用戶在'郵件發送或不發送'之後沒有填寫'名稱或主題等',則使用'die()'進行檢查。 –

0
$to = $myEmail; 
$subject = $subject; 
$message = $message; 
$from = $email; 
$headers = "From:" . $from; 
if(@mail($to, $subject, $message, $headers)) { 
    echo "Mail Sent"; 
} else { 
    echo "Fail"; 
} 
+0

這段代碼與OP有什麼不同?我只是壓制'mail()'可能引發的錯誤。 –

相關問題