2013-08-14 8 views
0

Я понимаю, что этот вопрос задавался много раз, но код каждого явно отличается, и я совершенно новичок в php, поэтому просто смотрю, может ли кто-нибудь помочь мне.PHP-контактная форма, отправляющая, но не получающая адрес электронной почты

Я создал основную контактную форму для сайта, но по какой-то причине информация не отправляется на мой адрес электронной почты, хотя я считаю, что форма отправлена?

мой PHP код:

<?php 
session_start(); 
//$to_mail = "[email protected],[email protected],[email protected]"; 
$to_mail = "[email protected]"; 
//$cc="[email protected]"; 
$mail_sent = 0; 
if(isset($_POST['submit'])){ 
    //echo "the form was submitted"; 

$error= array(); 

$name = trim(strip_tags($_POST['name'])); 
if($name == "") 
    $error['name'] = 1; 

$email = trim(strip_tags($_POST['email'])); 
if($email == "") 
    $error['email'] = 1; 

$phone = trim(strip_tags($_POST['phone'])); 

$address = trim(strip_tags($_POST['address'])); 

$description = trim(strip_tags($_POST['description'])); 

$str = trim(strip_tags($_POST['secu'])); 
if (isset($_SESSION['code_']) && $_SESSION['code_'] == strtoupper($str)){} else {$error['secu'] = 1;} 


if(empty($error)){ 
    $headers = 'From: "Euro Insulation" <[email protected]>'."\r\n"; 
    //$headers .= 'CC: "'.$cc.'" <'.$cc.'>'."\r\n"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=utf-8' . ""; 



    $subject = "New contact message"; 

    $message = "New Contact message, received from: <br /> \n "; 
    $message .= "<b>Name</b> ".$name."<br /> \n"; 
    $message .= "<b>Email</b> ".$email."<br /> \n"; 

    $message .= "<b>Phone</b> ".$phone."<br /> \n"; 
    $message .= "<b>Address</b> ".$address."<br /> \n"; 

    $message .= "<b>Description</b> ".$description."<br /> \n"; 

    if(@mail($to_mail,$subject,$message,$headers)) 
    { 
     echo "mail sent"; 
     $mail_sent = 1; 
    } 
    else echo "mail not sent"; 
} 

} 

?> 

мой HTML форма выглядит следующим образом:

<table width="100%" border="0" cellspacing="0" cellpadding="10"> 
       <tr> 
        <td width="65%" valign="top"><p class="header"><br> 
     Contact US <br> 
        </p> 
         <?php if($mail_sent==1){ 
    print "Thank you for your message."; 
} else { ?> 
<form class="email_sub" method="post" > 

<table width="77%" border="0" align="center" cellpadding="2" cellspacing="0"> 
<tr> 
<td><label for="name" class="formtext" <?php if($error['name']==1) echo "style='color:red;'" ?> >Name:</label></td> 
<td><input type="text" name="name" id="text" <?php if($name) echo "value='".$name."'" ?> /></td> 
</tr> 
<tr> 
<td><label for="phone" class="formtext">Number:</label></td> 
<td><input type="text" name="phone" id="phone"/><tr> 
<br /> 

<tr> 
<td><label for="email" class="textarea" <?php if($error['email']==1) echo "style='color:red;'" ?>>Email:</label></td> 
<td><input type="text" name="email" id="email" <?php if($email) echo "value='".$email."'" ?> /></td> 
</tr> 
<tr> 
<td><br /></td> 
</tr> 

<tr><td><label for="address" class="textarea">Address/Location of project:</label></td> 
<td><textarea rows="3" cols="20" name="address" id="address" style="width: 400px;"><?php if($address!="") echo $address ?></textarea></td> 
</tr> 
<tr> 
<td><br /></td> 
</tr> 
<br /> 
<tr> 
<td><label for="description" class="fixedwidth">Enquiry</label></td> 
<td><textarea rows="3" cols="20" name="description" id="description" style="width: 400px;"><?php if($description!="") echo $description; ?></textarea></td> 
<tr> 
<td><br /></td> 
</tr> 

<!-- form --> 
<tr> 
<td><label>&nbsp;</label></td> 
<td><input type="submit" value="Submit" name="submit" /></td> 
</tr> 
</table> 
</form> 
<?php } ?>   

я упускаю что-то очевидное здесь ?? Любая помощь будет очень благодарна спасибо!

+3

первый очевидный вопрос: ваш сервер настроен для отправки писем? – DonCallisto

+0

«Я считаю, что форма отправляется» ... Вы видите, что ваша страница перезагружается и отображает ожидаемые сообщения ?. Также, как сказано выше ?. Вы проверили настройки своего сервера ?. Попробуйте создать открытый файл php, который отправляет почту и ничего не делает. –

+0

Да, страница определенно перезагружается, как только я нажимаю кнопку «Отправить», но ничего больше не происходит? В конце моего php-кода я установил его для печати «отправлено по почте» или «почта не отправлена», но она не печатает ни на консоли в Chrome? я понимаю, что он даже не дошел до этого? Как сделать создание и отправку голого файла? Извините, как я сказал, совершенно новое в этом! – DannyW86

ответ

1

Вы использовали сеансы, которые здесь не требуются, вы также можете использовать переменную flag вместо массивов в этой простой форме, используйте этот обновленный код.

<?php 
//$to_mail = "[email protected],[email protected],[email protected]"; 
$to_mail = "[email protected]"; 
//$cc="[email protected]"; 
$mail_sent = 0; 
if(isset($_POST['submit'])){ 
    //echo "the form was submitted"; 

$name = trim(strip_tags($_POST['name'])); 
if($name == "") 
    $error = true; 

$email = trim(strip_tags($_POST['email'])); 
if($email == "") 
    $error = true; 

$phone = trim(strip_tags($_POST['phone'])); 
$address = trim(strip_tags($_POST['address'])); 
$description = trim(strip_tags($_POST['description'])); 


if($error != true){ 
    $headers = 'From: "Euro Insulation" <[email protected]>'."\r\n"; 
    //$headers .= 'CC: "'.$cc.'" <'.$cc.'>'."\r\n"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=utf-8' . ""; 

    $subject = "New contact message"; 

    $message = "New Contact message, received from: <br /> \n "; 
    $message .= "<b>Name</b> ".$name."<br /> \n"; 
    $message .= "<b>Email</b> ".$email."<br /> \n"; 

    $message .= "<b>Phone</b> ".$phone."<br /> \n"; 
    $message .= "<b>Address</b> ".$address."<br /> \n"; 

    $message .= "<b>Description</b> ".$description."<br /> \n"; 

    if(@mail($to_mail,$subject,$message,$headers)) 
    { 
     echo "mail sent"; 
     $mail_sent = 1; 
    } 
    else echo "mail not sent"; 
} else { 
    echo 'validation error'; 
} 
} 
?> 

Вы также пропустили инструкцию else для теста проверки формы, чтобы при отправке формы не отображались ошибки.

+0

Вы легенда! Спасибо! :) – DannyW86

0

Удалите функцию «Подпись из почты» и узнайте, какие ошибки вы получите. @mail подавляет ошибки от отображения.

+0

Все еще не дает никаких ошибок! – DannyW86

0

закомментируйте следующую строку: если (Исеть ($ SESSION [ 'код ']) & & $ SESSION [' код'] == strtoupper ($ строка)) {} еще {$ ошибка [ 'secu'] = 1;}

Вы должны иметь возможность связаться с почтой.

Смежные вопросы