Мой код PHP Mailer дает ошибку HTTP 500 - PullRequest
0 голосов
/ 05 июля 2019

Я собрал подробную форму заявки для веб-сайта, в которой используются обычные текстовые поля, выпадающие списки параметров, календарь для дат, флажки и вложения. Я получил красивую форму для отправки по электронной почте, используя обычный PHP, но застрял при работе с разделом вложения. Затем я узнал, что лучше всего использовать PHP Mailer, поэтому я сделал для этого PHP, но получил ужасную ошибку HTTP 500. Пожалуйста, может кто-нибудь проверить мой код, чтобы увидеть, где я иду не так, пожалуйста. Заранее большое спасибо.

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'href="/PHPMailer/src/Exception.php"';
require 'href="/PHPMailer/src/PHPMailer.php"';

$message = '';

function clean_text($string)
{
$string = trim($string);
$string = stripslashes($string);
$string = htmlspecialchars($string);
return $string;
}

if(isset($_POST["submit"]))
{
$path = 'href="/upload/"' . $_FILES["attachment"]["name"];
move_uploaded_file($_FILES["attachment"]["tmp_name"], $path);
$message = '
<h3 align="center">Application Details</h3>
<table border="1" width="100%" cellpadding="5" cellspacing="5">
<tr>
<td width="30%">First Name</td>
<td width="70%">'.$_POST["first_name"].'</td>
</tr>
<tr>
<td width="30%">Last Name</td>
<td width="70%">'.$_POST["last_name"].'</td>
</tr>
<tr>
<td width="30%">Email Address</td>
<td width="70%">'.$_POST["email"].'</td>
</tr>
<tr>
<td width="30%">Phone Number</td>
<td width="70%">'.$_POST["phone_number"].'</td>
</tr>
<tr>
<td width="30%">Position</td>
<td width="70%">'.$_POST["position"].'</td>
</tr>
<tr>
<td width="30%">WhatsApp Number</td>
<td width="70%">'.$_POST["whatsapp_no"].'</td>
</tr>
<tr>
<td width="30%">Yacht Name</td>
<td width="70%">'.$_POST["yacht_name"].'</td>
<tr>
<td width="30%">Yacht Type</td>
<td width="70%">'.$_POST["yacht_type"].'</td>
</tr>
<tr>
<td width="30%">Yacht Size</td>
<td width="70%">'.$_POST["yacht_size"].'</td>
</tr>
<tr>
<td width="30%">Cruising Type</td>
<td width="70%">'.$_POST["cruising_type"].'</td>
</tr>
<tr>
<td width="30%">Yacht Location</td>
<td width="70%">'.$_POST["yacht_location"].'</td>
</tr>
<tr>
<td width="30%">Yacht Itinenary</td>
<td width="70%">'.$_POST["yacht_itinenary"].'</td>
</tr>
<tr>
<td width="30%">Work Posistion</td>
<td width="70%">'.$_POST["work_position"].'</td>
</tr>
<tr>
<td width="30%">Work Type</td>
<td width="70%">'.$_POST["work_type"].'</td>
</tr>
<tr>
<td width="30%">Start Date</td>
<td width="70%">'.$_POST["start_date"].'</td>
</tr>
<tr>
<td width="30%">Finish Date</td>
<td width="70%">'.$_POST["finishing_date"].'</td>
<tr>
<td width="30%">Visa Required</td>
<td width="70%">'.$_POST["visa_req"].'</td>
</tr>
<tr>
<td width="30%">Qualifications Required</td>
<td width="70%">'.$_POST["qual_req"].'</td>
</tr>
<tr>
<td width="30%">Job Description</td>
<td width="70%">'.$_POST["job_desc"].'</td>
</tr>
<tr>
<td width="30%">Shared Cabin</td>
<td width="70%">'.$_POST["shared_cabin"].'</td>
</tr>
<tr>
<td width="30%">Understood Terms</td>
<td width="70%">'.$_POST["terms"].'</td>
</tr>
<tr>
<td width="30%">Confidental</td>
<td width="70%">'.$_POST["confidential"].'</td>
</tr>
</table>
';
if (isset($_POST['shared_cabin'])){
$_POST['shared_cabin']; // Displays value of checked checkbox.
} 
if (isset($_POST['terms'])){
$_POST['terms']; // Displays value of checked checkbox.
} 
if (isset($_POST['confidential'])){
$_POST['confidential']; // Displays value of checked checkbox.
}   

require 'class/class.phpmailer.php';
$mail = new PHPMailer(TRUE);
$mail->From = $_POST["email_from"];     //Sets the From email address for 
the message
$mail->FromName = $_POST["first_name"]["last_name"];    //Sets the From 
name of the message
$mail->AddAddress('timmy2872@gmail.com');  //Adds a "To" address
$mail->WordWrap = 50;       //Sets word wrapping on the body of the 
message to a given number of characters
$mail->IsHTML(true);       //Sets message type to HTML
$mail->AddAttachment($path);     //Adds an attachment from a path on the 
filesystem
$mail->Subject = 'Employer Application Form details';    //Sets the 
Subject of the message
$mail->Body = $message;       //An HTML or plain text message body
if($mail->Send())        //Send an Email. Return true on success or false 
on error
{
$message = '<div class="alert alert-success">Application Successfully 
Submitted</div>';
unlink($path);
}
else
{
$message = '<div class="alert alert-danger">There is an Error</div>';
}
}

?>

1 Ответ

0 голосов
/ 06 июля 2019

Все исправлено и работает как мечта сейчас. Проблема была в том, что сайт, над которым я работаю, находится в папке «Temp», чтобы не расстраивать старый сайт. У меня была папка PHPMailer и Upload в подкаталоге, а не в главном каталоге сервера, поэтому так и должно быть -

require "/home/awolpm/PHPMailer/src/Exception.php";
require "/home/awolpm/PHPMailer/src/PHPMailer.php";

Также эта строка не нужна -

 require 'class/class.phpmailer.php';

Папка для загрузки должна быть -

$path = '/home/awolpm/upload/"' . $FILES["attachment"]["name"];
move_uploaded_file($FILES["attachment"]["tmp_name"], $path);

Конечно, заставил меня немного почесать голову!

Последнее, что нужно сделать для этого, - создать всплывающее модальное окно при успешной отправке и вернуть отправителю электронное письмо с подтверждением.

...