<?php
require 'PHPMailer/PHPMailerAutoload.php';
try {
if(isset($_POST['btnSend'])) {
$mail = new PHPMailer;
if(empty($_POST["name"])){
print 'Name is too short or empty!';
exit;
}
if(!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)){ //email validation
print 'Please enter a valid email!';
exit;
}
if(empty($_POST["subject"])){ //check emtpy subject
print 'Subject is required';
exit;
}
if(empty($_POST["message"])){ //check emtpy message
print 'Too short message! Please enter something.';
exit;
}
$sender_name = filter_var($_POST["name"], FILTER_SANITIZE_STRING); //capture sender name
$sender_email = filter_var($_POST["email"], FILTER_SANITIZE_STRING); //capture sender email
$subject = filter_var($_POST["subject"], FILTER_SANITIZE_STRING);
$message = filter_var($_POST["message"], FILTER_SANITIZE_STRING); //capture message
$mail->FromName = $sender_name;
$mail->AddAddress($sender_email);
$mail->From = "admin@gmail.com";
$mail->Subject = $subject;
$message_body = "Message from $sender_name\n";
$message_body .= "------------------------------\n";
$message_body .= "$message\n";
$message_body .= "------------------------------\n";
$message_body .= "$sender_name\n";
$message_body .= "$sender_email\n";
$body = preg_replace('/\\\\/','', $message_body);
$mail->MsgHTML($body);
$mail->IsSendmail();
$mail->AddReplyTo("admin@gmail.com");
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->WordWrap = 80;
$mail->AddAttachment($_FILES['attachment']['tmp_name'], $_FILES['attachment']['name']);
$mail->IsHTML(true);
$mail->Send();
echo 'The message has been sent.';
}
} catch (phpmailerException $e) {
echo $e->errorMessage();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>How to Send Email with Attachment in PHP - XpertPhp</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<form method="post" enctype='multipart/form-data'>
<div class="form-group">
<label for="name">Name:</label>
<input type="text" class="form-control" id="name" placeholder="Enter Name" name="name">
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
</div>
<div class="form-group">
<label for="subject">Subject:</label>
<input type="text" class="form-control" id="subject" placeholder="Enter Subject" name="subject">
</div>
<div class="form-group">
<label for="message">Message :</label>
<textarea class="form-control" id="message" name="message"></textarea>
</div>
<div class="form-group">
<label for="attachment">Attachment :</label>
<input type="file" class="form-control" id="attachment" name="attachment" />
</div>
<button type="submit" name="btnSend" class="btn btn-default">Send</button>
</form>
</div>
</body>
</html>