2013-10-13 3 views
0

У меня есть страница «Связаться с нами» на моем сайте. я хочу, чтобы кто-то заполнил форму и нажал кнопку отправки. Сообщение должно быть отправлено в мой gmail. Я написал для него следующий код. это не работает. есть ли другой способ, которым я могу выполнить то же самое.Отправка почты непосредственно из формы

код Html:

<form id="ContactForm" action="contacts.php" method="post"> 
    <div> 
     <div class="wrapper"> <strong>Name:</strong> 
      <div class="bg"> 
       <input type="text" class="input" name="name"> 
      </div> 
     </div> 
     <div class="wrapper"> <strong>Email:</strong> 
      <div class="bg"> 
       <input type="text" class="input" name="email"> 
      </div> 
     </div> 
     <div class="textarea_box"> <strong>Message:</strong> 
      <div class="bg"> 
       <textarea cols="1" rows="1" name="message"></textarea> 
      </div> 
     </div> 
     <a href="javascript:;" onclick="document.getElementById('ContactForm').submit();" class="button"><span>Send</span></a> <a href="#" class="button"><span>Clear</span></a> </div> 
      </form> 

код PHP

<?php 
session_start(); 
$to = "[email protected]"; 
$subject = "Someone Tried to contact you"; 
$message = $_POST['message']; 
$fromemail = $_POST['email']; 
$fromname = $_POST['name']; 
$lt= '<'; 
$gt= '>'; 
$sp= ' '; 
$from= 'From:'; 
$headers = $from.$fromname.$sp.$lt.$fromemail.$gt; 
mail($to,$subject,$message,$headers); 
echo "mail sent"; 
exit(); 
?> 
+3

Привет! Я [Бобби Столз] (http://xkcd.com/327/) младший брат. Вы можете называть меня «Johny \ r \ nHeader: Injection». – PeeHaa

+0

Как настроен почтовый сервер? Вы пытаетесь выполнить сценарий на локальном компьютере или на сервере. Я бы посмотрел на это в первую очередь. –

+0

Я загрузил все это на веб-сервере. а не локальный компьютер. его не работает –

ответ

0

Извините, но ваш код дерьмовый (особенно, те конкатенации). Используйте Swift mailer, который обеспечивает стиль ООП и выполняет все задание заголовка для вас. И убедитесь, что у вас установлен какой-либо почтовый сервер (вы проверили, есть ли у вас?).

+0

У меня установлен почтовый сервер. я уверен в этом –

1

Во-первых, вы должны проверить свои входы для инъекций PHP.

$message = stripslashes($_POST['message']); 
$fromemail = stripslashes($_POST['email']); 
$fromname = stripslashes($_POST['name']); 

Кроме того, в вашем почтовом сценарии, похоже, ничего плохого не происходит. Проблема, скорее всего, вызвана вашим PHP-сервером. Ваш веб-хостинг определенно предоставляет почту PHP? Большинство бесплатных веб-хостов не предоставляют этого, поскольку они часто используются для рассылки спама.

+0

его работа. я сделал некоторую коррекцию. есть ли другой способ отправить почту прямо в мой gmail, используя форму для связи с нами –

0

PHP форма:

<?php 

header('Content-Type: text/html; charset=utf-8'); 

// Your Email 
$receiver = '[email protected]'; 


if (isset($_POST['send'])) 
{ 






    $name = $_POST['name'] 

    $email = $_POST['email']; 

    if ((strlen($_POST['subject']) < 5) || (strlen($_POST['message']) < 5)) 
    { 
     die('Please fill in all fields!'); 
    } 
    else 
    { 
     $subject = $_POST['subject']; 
     $message = $_POST['message']; 
    } 




    $mailheader = "From: Your Site <[email protected]" .$_SERVER['SERVER_NAME']. ">\r\n"; 
    $mailheader .= "Reply-To: " .$name. "<" .$email. ">\r\n"; 
    $mailheader .= "Return-Path: [email protected]" .$_SERVER['SERVER_NAME']. "\r\n"; 
    $mailheader .= "MIME-Version: 1.0\r\n"; 
    $mailheader .= "Content-Type: text/plain; charset=UTF-8\r\n"; 
    $mailheader .= "Content-Transfer-Encoding: 7bit\r\n"; 
    $mailheader .= "Message-ID: <" .time(). " [email protected]" .$_SERVER['SERVER_NAME']. ">\r\n"; 
    $mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n\r\n"; 


    if (@mail($receiver, htmlspecialchars($subject), $message, $mailheader)) 
    { 

     echo 'Email send!'; 
    } 
} 

?> 

HTML форма:

<form action="mail.php" method="post"> 
Name: <input type="text" name="name" /><br /> 
Email: <input type="text" name="email" /><br /> 
Subject: <input type="text" name="subject" /><br /> 
Message: <textarea name="message" cols="20" rows="2"></textarea><br /> 
<input name="send" type="submit" value="Send Email" /> 
</form> 
Смежные вопросы