0

好的,我有我的表单(第一个代码片段),我正在尝试使用 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'] ;
4

3 回答 3

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"  >
于 2010-08-30T20:33:02.190 回答
0

您似乎在发送消息 后设置了 $comments 变量。

于 2010-08-30T20:01:08.423 回答
0

您在尝试发送邮件后设置变量。另外,我没有看到名为message. 但是,我确实看到了一个file虽然没有设置表单的 enctype 的名称。所以有很多错误需要修复。

不确定您要做什么,但似乎您不需要两者commentsmessage。从message发送脚本中删除并file从 html 表单中删除,看看你是否可以让它像这样工作。还将变量分配从发送脚本的底部移动到顶部。

于 2010-08-30T20:05:28.817 回答