0

我创建了一个使用 PEAR Mail_Mime 的 HTML。提交表格后,我得到附件没问题。我遇到的问题是表单的输入字段(姓名、电话、电子邮件)未包含在我收到的电子邮件中。我怎样才能得到这个信息呢?当谈到 PHP 时,我是一个 Noobie,所以要温柔。

    <?php 
    include('PEAR/Mail.php');
    include('PEAR/Mail/mime.php');
    $max_allowed_file_size = 900; // size in KB 
    $allowed_extensions = array("pdf", "doc", "docx", "txt");
    $upload_folder = './uploads/'; //<-- this folder must be writeable by the script
    $your_email = 'gradysapp@gmail.com';//<<--  update this to your email address

    $errors ='';

    if(isset($_POST['submit']))
    {
//Get the uploaded file information
$name_of_uploaded_file =  basename($_FILES['uploaded_file']['name']);

//get the file extension of the file
$type_of_uploaded_file = substr($name_of_uploaded_file, 
                        strrpos($name_of_uploaded_file, '.') + 1);

$size_of_uploaded_file = $_FILES["uploaded_file"]["size"]/1024;

///------------Do Validations-------------
if(empty($_POST['name'])||empty($_POST['email']))
{
    $errors .= "\n Name and Email are required fields. ";   
}
if(IsInjected($visitor_email))
{
    $errors .= "\n Bad email value!";
}

if($size_of_uploaded_file > $max_allowed_file_size ) 
{
    $errors .= "\n Size of file should be less than $max_allowed_file_size";
}

//------ Validate the file extension -----
$allowed_ext = false;
for($i=0; $i<sizeof($allowed_extensions); $i++) 
{ 
    if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0)
    {
        $allowed_ext = true;        
    }
}

if(!$allowed_ext)
{
    $errors .= "\n The uploaded file is not supported file type. ".
    " Only the following file types are supported: ".implode(',',$allowed_extensions);
}

//send the email 
if(empty($errors))
{
    //copy the temp. uploaded file to uploads folder
    $path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
    $tmp_path = $_FILES["uploaded_file"]["tmp_name"];

    if(is_uploaded_file($tmp_path))
    {
        if(!copy($tmp_path,$path_of_uploaded_file))
        {
            $errors .= '\n error while copying the uploaded file';
        }
    }

    //send the email
    $name = $_POST['name'];
    $visitor_email = $_POST['email'];
    $user_message = $_POST['message'];
    $to = $your_email;
    $subject="New form submission";
    $from = $your_email;
    $text = "A user  $name has sent you this message:\n $user_message";

    $message = new Mail_mime();
    $message->setTXTBody($text);
    $message->addAttachment($path_of_uploaded_file);
    $body = $message->get();
    $extraheaders = array("From"=>$from, "Subject"=>$subject,"Reply-To"=>$visitor_email);
    $headers = $message->headers($extraheaders);
    $mail = Mail::factory("mail");
    $mail->send($to, $headers, $body);
    //redirect to 'thank-you page
    header('Location: careers_thank-you.html');
}
    }
    ///////////////////////////Functions/////////////////
    // Function to validate against any email injection attempts
    function IsInjected($str)
    {
    $injections = array('(\n+)',
          '(\r+)',
          '(\t+)',
          '(%0A+)',
          '(%0D+)',
          '(%08+)',
          '(%09+)'
          );
   $inject = join('|', $injections);
   $inject = "/$inject/i";
   if(preg_match($inject,$str))
   {
   return true;
   }
   else
  {
  return false;
  }
  }
  ?>

如果此处的代码有任何错误,请使用以下表格。

    <?php
if(!empty($errors))
{
echo nl2br($errors);
}
?>
<form method="POST" name="email_form_with_php" 
action="php-form-action.php" enctype="multipart/form-data"> 
<p>
<label for='name'>Name: </label><br>
<input type="text" name="name" >
</p>
<p>
<label for='email'>Email: </label><br>
<input type="text" name="email" >
</p>
<p>
<label for='phone'>Phone: </label><br>
<input type="text" name="phone" >         
<p>
<label for='position'>Which position are you applying for? </label><br>
<input type="text" name="position" >        
  <p>
<label for='resume_uploaded_file'>Please attach your resume or work history.</label><br>
<input type="file" name="uploaded_file">      
<span class="smallNote">(PDF or Word Document)</span>
  <p>
    <label for='letter_uploaded_file'>Please attach your cover letter.</label><br>
<input type="file" name="letter_uploaded_file">      
  <span class="smallNote">(PDF or Word Document)</span>
  <p>
    <input type="submit" value="Submit" name='submit'>
</form>
4

1 回答 1

2
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$user_message = $_POST['message'];
$to = $your_email;
$subject="New form submission";
$from = $your_email;
$text = "A user  $name has sent you this message:\n $user_message";

我认为您只需要添加几行:

$phone = $_POST["phone"];

$text = "A user  $name has sent you this message:\n $user_message";
$text .= "Phone: " . $phone . "\n";
$text .= "Email: " . $visitor_email . "\n";
于 2012-08-15T19:33:07.217 回答