2010-08-30 5 views
0

Хорошо, у меня есть моя форма (первый фрагмент кода), и я пытаюсь использовать PHPmailer для ее отправки. Однако он отправляет сообщение без какой-либо информации из фактической формы. Я довольно потерял, как заставить это работать.PHPmailer: Отправить из формы

<form action="send_form_email.php" method="post" id="ContactForm"> 
        <fieldset> 
       <p class="email">magazines/newspapers</p> 
         <ol> 
          <li> 
           <label for=name>Name</label> 
           <input id="name" name="name" type="text" placeholder="name" required autofocus> 
          </li> 


          <li> 
           <label for=email>Email</label> 
           <input id="email" name="email" type=email placeholder="[email protected]" required> 
          </li> 

          <li> 
           <label for=telephone>Phone</label> 
           <input id=telephone name=telephone type=tel placeholder="Eg. 888-555-5555" required> 
          </li> 

          <li> 
          <label for="comments">note</label> 
       <textarea name=comments type=text placeholder="enter your comments" required></textarea> 
          </li> 

          <li> 
          <label for="file">File</label> 
          <input id="file" type="file" name="file" /> 
          </li> 

         </ol> 
        </fieldset> 

       <fieldset> 
         <button type=submit>submit</button> 
        </fieldset> 

       </form> 

почта сценарий:

require("mail/class.phpmailer.php"); 

$mail = new PHPMailer(); 
$mail->Host = "localhost";    
$mail->From = "[email protected]"; 
$mail->FromName = "Your Name"; 
$mail->AddAddress("[email protected]"); 


$mail->Subject = "Feedback form results"; 
$mail->Body = $comments; 
$mail->WordWrap = 50; 

if(!$mail->Send()) 
{ 
    echo 'Message was not sent.'; 
    echo 'Mailer error: ' . $mail->ErrorInfo; 
} 
else 
{ 
    echo 'Thank you for your feedback.'; 
} 
    $email = $_REQUEST['email'] ; 
    $comments = $_POST['telephone'] ; 
    $phone = $_REQUEST['comments'] ; 
    $message = $_REQUEST['message'] ; 

ответ

0

Похоже, что вы устанавливаете $ комментарии переменных после отправки сообщения.

+0

О, спасибо .. Очень глупый вопрос. Но как я могу отправить несколько «переменных». Прямо сейчас $ comments настроено на телефон. Но мне нужна электронная почта, телефон, комментарии и даже загрузка файлов. –

+0

Что вы хотите, чтобы получившееся сообщение электронной почты выглядело как для заданного адреса электронной почты, телефона #, комментариев и т. Д., Чтобы выглядеть? – ngroot

+0

Имени электронных номер комментария прикрепление файла –

0

Вы устанавливаете переменные после попытки отправки почты. Кроме того, я не вижу ввода формы с именем message. Тем не менее, я вижу один из них с именем file, хотя enctype формы не задан. Таким образом, существует множество ошибок, требующих исправления.

Не уверен, что вы пытаетесь сделать, но, похоже, вам не нужны оба comments и message. Удалите message из сценария отправки и удалите file из html-формы, чтобы узнать, можете ли вы заставить его работать следующим образом. Также переместите назначения переменных со дна отправляющего сценария вверху.

+0

Спасибо webbiedave. Я переместил его вверх, и это все исправить. Ну, он отправляет электронное письмо с данными $ comments. Тем не менее, мне нужна электронная почта, телефон, а также файл (с помощью ввода файлов). Извините, я отчасти новичок в этом. –

1

ОК, поэтому шаг один (необязательно) состоит в том, чтобы собирать опубликованные переменные в локальные переменные - ПЕРЕД НАЧАЛОМ вы попадаете в бит $mail=new PHPMailer().... Это необязательно для ограниченного фрагмента кода, который вы предоставляете, но вы можете использовать их где-то еще.

$name = $_POST['name'] ; 
$email = $_REQUEST['email'] ; 
$telephone = $_REQUEST['telephone'] ; 
$comments = $_POST['comments'] ; 

А теперь измените $mail->Body = $comments; линию:

$mail->Body=" 
Name: $name 
Email: $email 
Telephone: $telephone 
Comments: $comments"; 

И как ngroot указывает; для добавления вложения:

$mail->AddAttachment($_FILES['file']['tmp_name']); 

... который вы можете позвонить несколько раз для нескольких приложений. Из-за того, как работает форма-загрузка (файлы хранятся во временном пространстве), вам нужно использовать эту переменную tmp_name. Вам также необходимо добавить многостраничную кодировку, чтобы разрешить загрузку файлов, поэтому строка формы должна выглядеть так:

<form enctype="multipart/form-data" action="send_form_email.php" method="post" id="ContactForm" > 
Смежные вопросы