phpmailerTest/index.php
2020-07-28 12:39:36 -06:00

150 lines
7.0 KiB
PHP

<?php
// show all errors and set global timeout
include_once('php/00_showErrors.include.php');
// include SMTP configuration and mailer function
include_once('config.php');
include_once('php/PHPMailer/mailer.php');
function missingConfig($missingParam){
echo '<h1>Configuration Error</h1>';
echo '<p>Please re-check <span style="font-weight: bold">config.php</span>. It appears you forgot to provide a value for <span style="font-weight: bold">' . $missingParam . '</span>.</p>';
echo '<p>Unable to continue until configuration error has been resolved.</p>';
die();
}
// global variables
$output = $usePort = $useArbPort = $useEncryption = $recipient = $replyTo = NULL;
// check configuration for missing entries
if (!$SMTP['timeout']) $SMTP['timeout'] = 15;
if (!$SMTP['hostname']) missingConfig('hostname');
if (!$SMTP['username']) missingConfig('username');
if (!$SMTP['password']) missingConfig('password');
// process POST request if made
if (isset($_POST) && !empty($_POST)){
// retain settings
if (!empty($_POST['portArbitrary'])){
if (filter_var($_POST['portArbitrary'], FILTER_VALIDATE_INT)){
$usePort = $useArbPort = $_POST['portArbitrary'];
} else{
$output .= '<< invalid port specified >><br>';
}
} elseif (!empty($_POST['port'])){
$usePort = $_POST['port'];
} else{
$output .= '<< no port selected >><br>';
}
if (!empty($_POST['encryption'])){
$useEncryption = $_POST['encryption'];
} else{
$output .= '<< no encryption selected >><br>';
}
if (!empty($_POST['recipient'])){
if (filter_var($_POST['recipient'], FILTER_VALIDATE_EMAIL)){
$recipient = $_POST['recipient'];
} else{
$output .= '<< no recipient address specified >><br>';
}
} else{
$output .= '<< no recipient address specified >><br>';
}
if (!empty($_POST['replyTo'])){
if (filter_var($_POST['replyTo'], FILTER_VALIDATE_EMAIL)){
$replyTo = $_POST['replyTo'];
} else{
$output .= '<< no reply address specified >><br>';
}
} else{
$output .= '<< no reply address specified >><br>';
}
// send email IFF no NULL fields
if ($usePort && $useEncryption && $recipient && $replyTo){
$output .= '<< using port: ' . $usePort . ' with encryption: ' . $useEncryption . ' >><br>';
$body = 'This is a test message from the Simple PHPMailer Test Script. You may ignore this message.';
$subject = 'PHPMailer Test-Script Message';
$mailResult = sendEmail($SMTP['timeout'], $SMTP['hostname'], $usePort, $useEncryption, $SMTP['username'], $SMTP['password'], $recipient, $replyTo, $body, $subject);
$output .= $mailResult['debug'];
}
} else{
$output = '<< click the TEST button to start testing >>';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Email Port Test</title>
<link rel="stylesheet" href="styles.css" integrity="sha384-9XO3MZfsbW7fC5tHf9nrGgI9BNaS4AEP0OoG6qQAY4PtIfCXaDAGObt6qBEHpyTa" crossorigin="anonymous">
</head>
<body>
<h1>Email Port Test</h1>
<p class="notice">*** Remember to remove this page when you are finished testing! This page has NO protections against being used for SPAM or being otherwise abused! ***</p>
<p>Fill in the form options below and click the 'TEST' button. Diagnostic data will be displayed whether or not the test email was successfully relayed.</p>
<form action="index.php" method="post" class="form">
<div class="options">
<div class="portSelect">
<p>port:</p>
<label for="port25" class="radioLabel">
<input type="radio" name="port" id="port25" class="btn_radio" value=25 <?php echo (isset($usePort) && $usePort === '25') ? 'checked' : NULL;?>>
SMTP (port 25)
</label>
<label for="port465" class="radioLabel">
<input type="radio" name="port" id="port465" class="btn_radio" value=465 <?php echo (isset($usePort) && $usePort === '465') ? 'checked' : NULL;?>>
SMTP/S (port 465)
</label>
<label for="port587" class="radioLabel">
<input type="radio" name="port" id="port587" class="btn_radio" value=587 <?php echo (isset($usePort) && $usePort === '587') ? 'checked' : NULL;?>>
SUBMISSION (port 587)
</label>
<label for="port2525" class="radioLabel">
<input type="radio" name="port" id="port2525" class="btn_radio" value=2525 <?php echo (isset($usePort) && $usePort === '2525') ? 'checked' : NULL;?>>
Alternate SMTP (port 2525)
</label>
<label for="portArbitrary" class="radioLabel">
&emsp;&nbsp;Arbitrary:
<input type="text" name="portArbitrary" id="portArbitrary" class="textbox" value="<?php echo (isset($useArbPort)) ? $useArbPort : ''; ?>">
</label>
</div>
<div class="encryptionSelect">
<p>encryption:</p>
<label for="noEnc" class="radioLabel">
<input type="radio" name="encryption" id="noEnc" class="btn_radio" value="none" <?php echo (isset($useEncryption) && $useEncryption === 'none') ? 'checked' : NULL;?>>
NONE
</label>
<label for="ssl" class="radioLabel">
<input type="radio" name="encryption" id="ssl" class="btn_radio" value="ssl" <?php echo (isset($useEncryption) && $useEncryption === 'ssl') ? 'checked' : NULL;?>>
SSL
</label>
<label for="starttls" class="radioLabel">
<input type="radio" name="encryption" id="starttls" class="btn_radio" value="starttls" <?php echo (isset($useEncryption) && $useEncryption === 'starttls') ? 'checked' : NULL;?>>
STARTTLS
</label>
</div>
</div>
<div class="addresses">
<label for="recipient" class="textLabel">
<span class="bold">Recipient:</span>
<input type="email" name="recipient" id="recipient" class="textbox" value="<?php echo (isset($recipient)) ? $recipient : ''; ?>">
</label>
<label for="replyTo" class="textLabel">
<span class="bold">Reply To:</span>
<input type="email" name="replyTo" id="replyTo" class="textbox" value="<?php echo (isset($replyTo)) ? $replyTo : ''; ?>">
</label>
</div>
<div class="buttons">
<button type="submit" class="btn">TEST</button>
<button type="reset" class="btn">CLEAR</button>
</div>
</form>
<h2>Diagnostic Output:</h2>
<div class="diagOutput">
<!-- phpmailer output here-->
<?php echo $output; ?>
</div>
</body>
</html>