PHPmailer: Отправить из формы - PullRequest
0 голосов
/ 30 августа 2010

Хорошо, у меня есть форма (первый фрагмент кода), и я пытаюсь использовать 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="example@domain.com" 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 = "xxxxxx@gmail.com";
$mail->FromName  =  "Your Name";
$mail->AddAddress("xxxxxxx@gmail.com");


$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'] ;

Ответы [ 3 ]

1 голос
/ 31 августа 2010

Хорошо, поэтому первый шаг (необязательно) состоит в том, чтобы собрать опубликованные переменные в локальные переменные - ДО вы попадете в бит $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"  >
0 голосов
/ 31 августа 2010

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

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

0 голосов
/ 31 августа 2010

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

...