我尝试用教程修复它越多,我就越打破它,所以你们几乎是我最后的选择。
我有一个更简单的版本工作正常,联系表单不包括我在标题中指定的特定字段(单选按钮,下拉列表和文件上传)所以我想,他们是罪魁祸首。这是我的问题:
请有人请查看此邮件代码并告诉我我做错了什么?
我的邮件程序
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
require_once 'phpmailer/PHPMailerAutoload.php';
if (isset($_POST['inputName']) && isset($_POST['inputEmail']) && isset($_POST['inputCompany']) && isset($_POST['inputPhone']) && isset($_POST['inputAddresss']) && isset($_POST['inputCity']) && isset($_POST['inputState']) && isset($_POST['inputZip']) && isset($_POST['inputProject']) && isset($_POST['inputYard']) && isset($_POST['inputPhoto']) && isset($_POST['inputMessage'])) {
//check if any of the inputs are empty
if (empty($_POST['inputName']) || empty($_POST['inputEmail']) || empty($_POST['inputPhone']) || empty($_POST['inputAddress']) || empty($_POST['inpuCity']) || empty($_POST['inputState']) || empty($_POST['inputZip']) || empty($_POST['inputMessage'])) {
$data = array('success' => false, 'message' => 'Please fill out the form completely.');
echo json_encode($data);
exit;
}
//Get the uploaded file information
$name_of_uploaded_file = basename($_FILES['inputProject']['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["inputProject"]["size"]/1024;//size in KBs
//Settings
$max_allowed_file_size = 500; // size in KB
$allowed_extensions = array("jpg", "jpeg", "png", "bmp");
//Validations
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);
}
//copy the temp. uploaded file to uploads folder
$path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
$tmp_path = $_FILES["inputProject"]["tmp_name"];
if(is_uploaded_file($tmp_path))
{
if(!copy($tmp_path,$path_of_uploaded_file))
{
$errors .= '\n error while copying the uploaded file';
}
}
//create an instance of PHPMailer
$mail = new PHPMailer();
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.live.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'email@email.com'; // SMTP username
$mail->Password = 'secretstuff'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$mail->addAttachment($path_of_uploaded_file, 'Project Photo'); // Add attachments
$mail->isHTML(true); // Set email format to HTML
$mail->From = $_POST['inputEmail'];
$mail->FromName = $_POST['inputName'];
$mail->AddAddress('email@email.com'); //recipient
$mail->Subject = "Quote from Nick & Sons LLC Online";
$mail->Body = "Name: " . $_POST['inputName'] . "\r\n\r\nCompany: " . $_POST['inputCompany'] . "\r\n\r\nPhone: " . $_POST['inputPhone'] . "\r\n\r\nAddress: " . $_POST['inputAddress'] . "\r\n\r\nCity: " . $_POST['inputCity'] . "\r\n\r\nState: " . $_POST['inputState'] . "\r\n\r\nZip: " . $_POST['inputZip'] . "\r\n\r\nProject Type: " . $_POST['inputProject'] . "\r\n\r\nYard Size: " . $_POST['inputYard'] . "\r\n\r\nProject Details: " . stripslashes($_POST['inputMessage']);
if (isset($_POST['ref'])) {
$mail->Body .= "\r\n\r\nRef: " . $_POST['ref'];
}
if(!$mail->send()) {
$data = array('success' => false, 'message' => 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo);
echo json_encode($data);
exit;
}
$data = array('success' => true, 'message' => 'Thanks! We have received your message.');
echo json_encode($data);
} else {
$data = array('success' => false, 'message' => 'Please fill out the form completely.');
echo json_encode($data);
}
我的Angular形式:
<div class="col-xs-12" ng-controller="QuoteController">
<h1 class="contact-title">Let's Get Started!</h1>
<p class="contact-sub-txt">Use the form below only for the purpose of requesting a quote for work you need. For all other general questions please refer to our <a href="#/contact">Contact Form</a> page.</p>
<div class="alert alert-info clearfix">
<div class="col-xs-3 col-sm-2 col-md-1">
<i class="fa fa-info fa-fw info-icon"></i>
</div>
<div class="col-xs-9 col-sm-10 col-md-11">
<h4>Disclaimer</h4>
<em>All projects vary in different size and complexity. In many cases, we can't adequate assess the problem until it is visually inspected. However, this quote will give us a general idea of the problem and will help us prepare for the visual inspection.</em>
</div>
</div>
<form ng-submit="submit(quoteform)" id="quote-form" role="form" name="quoteform" method="post" action="" enctype="multipart/form-data">
<span class="notice">All fields marked required <span class="required">*</span> mut be filled out.</span>
<div class="row">
<div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputName.$invalid && submitted }">
<label for="inputName">Name <span class="required">*</span></label>
<input ng-model="formData.inputName" type="text" name="inputName" placeholder="e.g. Jhon Smith" class="form-control form-control-success" id="name">
</div>
<div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="">
<label for="inputCompany">Company Name <span class="required">*</span></label>
<input ng-model="formData.inputCompany" type="text" name="inputCompany" placeholder="e.g. Angu Studio" class="form-control form-control-success" id="company">
</div>
<div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputEmail.$invalid && submitted }">
<label for="inputEmail">Email Address <span class="required">*</span></label>
<input ng-model="formData.inputEmail" type="email" name="inputEmail" placeholder="e.g. mail@example.com" class="form-control form-control-success" id="email">
</div>
<div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputPhone.$invalid && submitted }">
<label for="inputPhone">Phone Number <span class="required">*</span></label>
<input ng-model="formData.inputPhone" type="phone" name="inputPhone" placeholder="e.g. 555-945-0090" class="form-control form-control-success" id="phone">
</div>
</div>
<div class="row">
<div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputAddress.$invalid && submitted }">
<label for="inputAddress">Address <span class="required">*</span></label>
<input ng-model="formData.inputAddress" type="text" name="inputAddress" placeholder="e.g. 12 E. Main St" class="form-control form-control-success" id="address">
</div>
<div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputCity.$invalid && submitted }">
<label for="inputCity">City <span class="required">*</span></label>
<input ng-model="formData.inputCity" type="text" name="inputCity" placeholder="e.g. Harrisburg" class="form-control form-control-success" id="city">
</div>
<div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputState.$invalid && submitted }">
<label for="inputState">State <span class="required">*</span></label>
<select ng-model="formData.inputState" id="state" name="inputState" class="form-control form-control-success">
<option>Select One</option>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="DC">District Of Columbia</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
<div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputZip.$invalid && submitted }">
<label for="inputZip">Zip <span class="required">*</span></label>
<input ng-model="formData.inputZip" type="text" name="inputZip" placeholder="e.g. 23456" class="form-control form-control-success" id="zip">
</div>
</div>
<div class="row">
<div class="form-group col-xs-12 col-sm-12 col-md-3">
<label for="inputProject">Project Type <span class="required">*</span></label><br />
<label class="checkbox-inline c-input c-checkbox">
<input ng-model="formData.inputProject1" type="checkbox" name="inputProject[Lawn Care]" id="project-checkbox0" value="">
<span class="c-indicator"></span>
Lawn Care
</label>
<br />
<label class="checkbox-inline c-input c-checkbox">
<input ng-model="formData.inputProject2" type="checkbox" name="inputProject[Home Improvement]" id="project-checkbox1" value="">
<span class="c-indicator"></span>
Home Improvement
</label>
</div>
<div class="form-group col-xs-12 col-sm-12 col-md-3">
<label for="inputYard">Yard Size </label>
<input ng-model="formData.inputYard" type="text" name="inputYard" placeholder="e.g. .25 acres" class="form-control" id="yard">
</div>
<div class="form-group col-xs-12 col-sm-12 col-md-6">
<label for="inputPhoto">Project Photo </label><br />
<label class="file">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input ng-model="formData.inputPhoto" type="file" name="inputPhoto" class="form-control" id="photo">
<span class="file-custom"></span>
</label>
</div>
</div>
<div class="row">
<div class="form-group col-xs-12" ng-class="{ 'has-error': quoteform.inputMessage.$invalid && submitted }">
<label for="inputMessage">Project Details <span class="required">*</span></label>
<textarea ng-model="formData.inputMessage" name="inputMessage" class="form-control" rows="12" id="projDetails"></textarea>
</div>
</div>
<div class="row">
<div class="form-group col-lg-12">
<input type="hidden" name="save" value="contact">
<button type="submit" class="btn btn-primary bt-contact-submit" ng-disabled="submitButtonDisabled">Submit</button>
</div>
</div>
</form>
<p ng-class="result" class="alert">{{ resultMessage }}</p>
</div>