<?php

/**
 * PHPMailer simple contact form example.
 * If you want to accept and send uploads in your form, look at the send_file_upload example.
 */

//Import the PHPMailer class into the global namespace
use PHPMailer\PHPMailer\PHPMailer;

require 
'../vendor/autoload.php';

if (
array_key_exists('email'$_POST)) {
    
$err false;
    
$msg '';
    
$email '';
    
//Apply some basic validation and filtering to the subject
    
if (array_key_exists('subject'$_POST)) {
        
$subject substr(strip_tags($_POST['subject']), 0255);
    } else {
        
$subject 'No subject given';
    }
    
//Apply some basic validation and filtering to the query
    
if (array_key_exists('query'$_POST)) {
        
//Limit length and strip HTML tags
        
$query substr(strip_tags($_POST['query']), 016384);
    } else {
        
$query '';
        
$msg 'No query provided!';
        
$err true;
    }
    
//Apply some basic validation and filtering to the name
    
if (array_key_exists('name'$_POST)) {
        
//Limit length and strip HTML tags
        
$name substr(strip_tags($_POST['name']), 0255);
    } else {
        
$name '';
    }
    
//Validate to address
    //Never allow arbitrary input for the 'to' address as it will turn your form into a spam gateway!
    //Substitute appropriate addresses from your own domain, or simply use a single, fixed address
    
if (array_key_exists('to'$_POST) && in_array($_POST['to'], ['sales''support''accounts'], true)) {
        
$to $_POST['to'] . '@example.com';
    } else {
        
$to 'support@example.com';
    }
    
//Make sure the address they provided is valid before trying to use it
    
if (PHPMailer::validateAddress($_POST['email'])) {
        
$email $_POST['email'];
    } else {
        
$msg .= 'Error: invalid email address provided';
        
$err true;
    }
    if (!
$err) {
        
$mail = new PHPMailer();
        
$mail->isSMTP();
        
$mail->Host 'localhost';
        
$mail->Port 25;
        
$mail->CharSet PHPMailer::CHARSET_UTF8;
        
//It's important not to use the submitter's address as the from address as it's forgery,
        //which will cause your messages to fail SPF checks.
        //Use an address in your own domain as the from address, put the submitter's address in a reply-to
        
$mail->setFrom('contact@example.com', (empty($name) ? 'Contact form' $name));
        
$mail->addAddress($to);
        
$mail->addReplyTo($email$name);
        
$mail->Subject 'Contact form: ' $subject;
        
$mail->Body "Contact form submission\n\n" $query;
        if (!
$mail->send()) {
            
$msg .= 'Mailer Error: ' $mail->ErrorInfo;
        } else {
            
$msg .= 'Message sent!';
        }
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>PHPMailer Contact Form</title>
</head>
<body>
<h1>Contact us</h1>
<?php if (empty($msg)) { ?>
    <form method="post">
        <label for="to">Send to:</label>
        <select name="to" id="to">
            <option value="sales">Sales</option>
            <option value="support" selected="selected">Support</option>
            <option value="accounts">Accounts</option>
        </select><br>
        <label for="subject">Subject: <input type="text" name="subject" id="subject" maxlength="255"></label><br>
        <label for="name">Your name: <input type="text" name="name" id="name" maxlength="255"></label><br>
        <label for="email">Your email address: <input type="email" name="email" id="email" maxlength="255"></label><br>
        <label for="query">Your question:</label><br>
        <textarea cols="30" rows="8" name="query" id="query" placeholder="Your question"></textarea><br>
        <input type="submit" value="Submit">
    </form>
<?php } else {
    echo 
$msg;
?>
</body>
</html>