Send Email with File Attachment (PDF, word files and images etc..) in PHP
Please go through the Following link to refer same tutorial
PHP Script to Send Email with Attachment
Please check my latest Video tutorial on: Send Email with Attachment Using PHP, jQuery, PHPMailer & Ajax from Scratch to Advanced
Video Tutorials on Youtube: Send Email with Attachment Using PHP, Ajax, jQuery & PHPMailer
this page has some issues with crayon syntax highlighter
I had searched in Google for long time for the script to send an email with file attachment (all types of file pdf files,word files and images etc……). It was hard thing to find out exact script. Here I had source code as well steps to implement email form attachment.
More importantly the mail will reaches inbox, mainly avoids as spam message.
This article shows you how to create a PHP based email form that supports file attachment.
The whole process consists of two steps
1. create an html form with attachment.
2. Then create php file that process data from the html form.
The HTML form with file upload box :
The code for an HTML form with a file upload box is given below. User can click on the ‘Browse’ button to select the file from his/her local machine.
<div>
<h1>Mail Demo Page</h1>
</div>
<div>
<form action='mail.php' method='post' id='mailForm' enctype='multipart/form-data'>
<table>
<tr>
<td> Name : </td>
<td><input type="text" id="name" name="name" placeholder='User Name'/>
<div id="invalid-name"></div>
</td>
</tr>
<tr>
<td> E-mail : </td>
<td><input type="email" id="email" name="email" placeholder='E-Mail'/>
<div id="invalid-email"></div>
</td>
</tr>
<tr>
<td> From E-mail : </td>
<td><input type="email" id="femail" name="femail" placeholder='From E-Mail'/>
<div id="invalid-femail"></div>
</td>
</tr>
<tr>
<td> Phone : </td>
<td><input type="tel" id="phone" name="phone" placeholder='Phone'/>
<div id="invalid-phone"></div>
</td>
</tr>
<tr>
<td> Image : </td>
<td><input type="file" id="image" name="image" placeholder='Image' accept="image/*"> <div id="invalid-image"></div></td>
</tr>
<tr>
<td> Message : </td>
<td><textarea cols="27" rows="5" id="message" name="message" placeholder='Message' value=''></textarea><div id="invalid-message"></td>
</tr>
<tr>
<td colspan="2"> <input type="submit" value="Send Mail!" id='submit_btn' name="submit_btn"/></td>
</tr>
<table>
</form>
</div>
The form will look like this:
Please note that we have added:
Now just follow php part coding. I am using php mail plugin to send an email with attachment.
Step 1:
Create mail.php file and add the following php file (class.phpmailer.php).
require 'class.phpmailer.php';
Step 2:
Now add to email ID.
$to = "Your email ID";
$mail->AddAddress($to);
Step 3:
Now get from email id and name of the user.
$mail->From = $_POST['femail'];
$mail->FromName = $_POST['name'];
Step 4:
Now add subject of the mail.
$mail->Subject = "Test Email using PHP";
Step 5:
Now get message from the html form.
$body = "<table>
<tr>
<th colspan='2'>This Sample Mail</th>
</tr>
<tr>
<td>Name :</td>
<td>".$_POST['name']."</td>
</tr>
<tr>
<td>E-mail : </td>
<td>".$_POST['email']."</td>
</tr>
<tr>
<td>Phone : </td>
<td>".$_POST['phone']."</td>
</tr>
<tr> <td>Message : </td> <td>".$_POST['message']."</td> </tr> <table>";
$body = preg_replace('/\\\\/','', $body); //Strip backslashes
$mail->MsgHTML($body);
Step 6:
Finally get the attachment and send it.
$mail->AddAttachment($_FILES['image']['tmp_name'],
$_FILES['image']['name']);
$mail->IsHTML(true); // send as HTML
$mail->Send();
echo 'Message has been sent.';
<?php
/**
* Simple example script using PHPMailer with exceptions enabled
* @package phpmailer
* @version $Id$
*/
require 'class.phpmailer.php';
try {
$mail = new PHPMailer(true); //New instance, with exceptions enabled
$to = $_POST['email'];
$mail->AddAddress($to);
$mail->From = $_POST['femail'];
$mail->FromName = $_POST['name'];
$mail->Subject = "Test Email using PHP";
$body = "<table>
<tr>
<th colspan='2'>This Sample Mail</th>
</tr>
<tr>
<td style='font-weight:bold'>Name :</td>
<td>".$_POST['name']."</td>
</tr>
<tr>
<td style='font-weight:bold'>E-mail : </td>
<td>".$_POST['email']."</td>
</tr>
<tr>
<td style='font-weight:bold'>Phone : </td>
<td>".$_POST['phone']."</td>
</tr>
<tr>
<td style='font-weight:bold'>Message : </td>
<td>".$_POST['message']."</td>
</tr>
<table>";
$body = preg_replace('/\\\\/','', $body); //Strip backslashes
$mail->MsgHTML($body);
$mail->IsSMTP(); // tell the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 25; // set the SMTP server port
//$mail->Host = "mail.yourdomain.com"; // SMTP server
//$mail->Username = "name@domain.com"; // SMTP server username
//$mail->Password = "password"; // SMTP server password
$mail->IsSendmail(); // tell the class to use Sendmail
$mail->AddReplyTo("admin@smarttutorials.net");
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->WordWrap = 80; // set word wrap
$mail->AddAttachment($_FILES['image']['tmp_name'],
$_FILES['image']['name']);
$mail->IsHTML(true); // send as HTML
$mail->Send();
echo 'Message has been sent.';
} catch (phpmailerException $e) {
echo $e->errorMessage();
}
?>
Hope this code works well for all for sending all type of files (word files,PDF files and images etc………..)
Please refer this cool tutorial on Send an E-Mail with Attachment Using jQuery, Ajax and PHP without Refrshing a Page
Download Premium Only Scripts & 80+ Demo scripts Instantly at just 1.95 USD per month + 10% discount to all Exclusive Scripts
If you want any of my script need to be customized according to your business requirement,
Please feel free to contact me [at] muni2explore[at]gmail.com
Note: But it will be charged based on your customization requirement