In this Post we have discuss one more topic related to PHPMailer Class and here we have discuss how can we send an Email with File attachment in PHP by using PHPMailer Library. We have received so many request from our viewer for publish web tutorial on sending of Email with Attachment by using PHPMailer from PHP form submission. We have already publish web tutorial on how to send email on PHP form submission and how can we send bulk email by using PHP with Ajax without refresh of web page. But in this post we have discuss something advance like how to send email with attach uploaded file by using PHPMailer Library in PHP.
PHPMailer is a PHP Class library which are used for sending email and this class has more functionality compared to the simple PHP mail() function including file attachment also. It is very useful if you have SMTP details then you can use that details into your PHP script and from your application you can send an email and you can also attach file with email on form submission by using this PHPMailer class.
For discuss how can we attach file sending of email by using PHPMailer in PHP. So here we have make simple programmer registration form in which programmer can fill their details. In that registration form we have add one file tag for programmer to attach resume. In this form all fields are compulsory and for form validation we have use HTML 5 validation. By using this validation we do not want to required to write any additional code for form validation. For attach file in an Email, so want to first upload file on our server folder and from that uploaded file path we can attach within mail by using AddAttachment() method of PHPMailer class. After attachment of file we can send email with file attachment using PHPMailer library. After successfully sending of email we have remove uploaded file from our space. So this way for attach file with email sending we want to temporary store on our space and after remove from our space. This is our simple tutorial on How to send email with attachment in PHP by using PHPMailer.
Source Code
index.php
<?php
//index.php
$message = '';
function clean_text($string)
{
$string = trim($string);
$string = stripslashes($string);
$string = htmlspecialchars($string);
return $string;
}
if(isset($_POST["submit"]))
{
$programming_languages = '';
foreach($_POST["programming_languages"] as $row)
{
$programming_languages .= $row . ', ';
}
$programming_languages = substr($programming_languages, 0, -2);
$path = 'upload/' . $_FILES["resume"]["name"];
move_uploaded_file($_FILES["resume"]["tmp_name"], $path);
$message = '
<h3 align="center">Programmer Details</h3>
<table border="1" width="100%" cellpadding="5" cellspacing="5">
<tr>
<td width="30%">Name</td>
<td width="70%">'.$_POST["name"].'</td>
</tr>
<tr>
<td width="30%">Address</td>
<td width="70%">'.$_POST["address"].'</td>
</tr>
<tr>
<td width="30%">Email Address</td>
<td width="70%">'.$_POST["email"].'</td>
</tr>
<tr>
<td width="30%">Progamming Language Knowledge</td>
<td width="70%">'.$programming_languages.'</td>
</tr>
<tr>
<td width="30%">Experience Year</td>
<td width="70%">'.$_POST["experience"].'</td>
</tr>
<tr>
<td width="30%">Phone Number</td>
<td width="70%">'.$_POST["mobile"].'</td>
</tr>
<tr>
<td width="30%">Additional Information</td>
<td width="70%">'.$_POST["additional_information"].'</td>
</tr>
</table>
';
require 'class/class.phpmailer.php';
$mail = new PHPMailer;
$mail->IsSMTP(); //Sets Mailer to send message using SMTP
$mail->Host = 'smtpout.secureserver.net'; //Sets the SMTP hosts of your Email hosting, this for Godaddy
$mail->Port = '80'; //Sets the default SMTP server port
$mail->SMTPAuth = true; //Sets SMTP authentication. Utilizes the Username and Password variables
$mail->Username = 'xxxxxxx'; //Sets SMTP username
$mail->Password = 'xxxxxxx'; //Sets SMTP password
$mail->SMTPSecure = ''; //Sets connection prefix. Options are "", "ssl" or "tls"
$mail->From = $_POST["email"]; //Sets the From email address for the message
$mail->FromName = $_POST["name"]; //Sets the From name of the message
$mail->AddAddress('web-tutorial@programmer.net', 'Webslesson'); //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 = 'Application for Programmer Registration'; //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>';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Send Email with Attachment in PHP using PHPMailer</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<br />
<div class="container">
<div class="row">
<div class="col-md-8" style="margin:0 auto; float:none;">
<h3 align="center">Send Email with Attachment in PHP using PHPMailer</h3>
<br />
<h4 align="center">Programmer Register Here</h4><br />
<?php print_r($message); ?>
<form method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Enter Name</label>
<input type="text" name="name" placeholder="Enter Name" class="form-control" required />
</div>
<div class="form-group">
<label>Enter Address</label>
<textarea name="address" placeholder="Enter Address" class="form-control" required></textarea>
</div>
<div class="form-group">
<label>Enter Email Address</label>
<input type="email" name="email" class="form-control" placeholder="Enter Email Address" required />
</div>
<div class="form-group">
<label>Select Programming Language</label>
<select name="programming_languages[]" class="form-control" multiple required style="height:150px;">
<option value=".NET">.NET</option><option value="Android">Android</option><option value="ASP">ASP</option><option value="Blackberry">Blackberry</option><option value="C">C</option><option value="C++">C++</option><option value="COCOA">COCOA</option><option value="CSS">CSS</option><option value="DHTML">DHTML</option><option value="Drupal">Drupal</option><option value="Flash">Flash</option><option value="HTML">HTML</option><option value="HTML 5">HTML 5</option><option value="IPAD">IPAD</option><option value="IPHONE">IPHONE</option><option value="Java">Java</option><option value="Java Script">Java Script</option><option value="Joomla">Joomla</option><option value="LAMP">LAMP</option><option value="Linux">Linux</option><option value="MAC OS">MAC OS</option><option value="Magento">Magento</option><option value="MySQL">MySQL</option><option value="Oracle">Oracle</option><option value="PayPal">PayPal</option><option value="Perl">Perl</option><option value="PHP">PHP</option><option value="Ruby on Rails">Ruby on Rails</option><option value="Salesforce.com">Salesforce.com</option><option value="SEO">SEO</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Select Year of Experience</label>
<select name="experience" class="form-control" required>
<option value="">Select Experience</option>
<option value="0-1 years">0-1 years</option>
<option value="2-3 years">2-3 years</option>
<option value="4-5 years">4-5 years</option>
<option value="6-7 years">6-7 years</option>
<option value="8-9 years">8-9 years</option>
<option value="10 or more years">10 or more years</option>
</select>
</div>
<div class="form-group">
<label>Enter Mobile Number</label>
<input type="text" name="mobile" placeholder="Enter Mobile Number" class="form-control" pattern="\d*" required />
</div>
<div class="form-group">
<label>Select Your Resume</label>
<input type="file" name="resume" accept=".doc,.docx, .pdf" required />
</div>
<div class="form-group">
<label>Enter Additional Information</label>
<textarea name="additional_information" placeholder="Enter Additional Information" class="form-control" required rows="8"></textarea>
</div>
</div>
</div>
<div class="form-group" align="center">
<input type="submit" name="submit" value="Submit" class="btn btn-info" />
</div>
</form>
</div>
</div>
</div>
</body>
</html>
Hi admin,
ReplyDeleteFirst, thank for the post. I would like to ask a question
What should I input in "xxxxxxx". I want users will input their email in the "Enter Email Address" but when I run the code, I had to put the same email in "$mail->Username" at that form to ensure the code will run correctly, if not it will not run.
$mail->Username = 'xxxxxxx'; //Sets SMTP username
$mail->Password = 'xxxxxxx'; //Sets SMTP password
same problem
Deletei like this tutorial. Can you kindly try and do this with mysql? Thank you in advance.
ReplyDeleteAttachment not working
ReplyDeleteThank you. I downloaded the source code. Please tell me what I have to change?
ReplyDeletePlease mention the lines to edit.
When i click on submit i just get "there is an error".
ReplyDeleteHave you considered adding some form input validations. It will make this very advanced. Otherwise great work.
ReplyDeletehi i am getting there is an error msg. how do i fix it.
ReplyDeleteI am getting error using local server xampp
ReplyDelete"There is an Error"
Hi getting a message saying there is a error please help
ReplyDeleteHello.
ReplyDeleteI am trying to create a system where my logged in clients can send emails to other clients whose email address they have added. Can this work out in php?
showing error msg......help me
ReplyDeleteI received a lot of error precisely in line 59
ReplyDeleteHi. Nice work.
ReplyDeleteCan you release resize image for attachment?
Thank you.
By clicking submit button i am getting one error
ReplyDeleteError 404
localhost
Apache/2.4.39 (Win64) OpenSSL/1.0.2r PHP/7.1.29
require 'class/class.phpmailer.php how do i download
ReplyDeletethere is an error but not specify an error
ReplyDeleteThanks . this is working
ReplyDelete