Hi in this tutorial, PHP beginners can learn how to upload a resume and send mail with attachment in PHP.

follow few simple steps to it:

Step 1

Create index.php file and make a form to upload file and some fields to enter data like to, subject & message.


        <title>Upload resume and send mail with attachment in php</title>
        <!-- Latest compiled and minified CSS -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

        <div class="container">
            <div class="row">
                <div class="col-md-3"></div>
                <div class="col-md-6">
                    <h3>Send mail with attachment in php</h3>
                    <form action="send_mail.php" method="post" name="form1" enctype="multipart/form-data">
                        <div class="form-group">
                            <input name="txtTo" type="text" class="form-control">

                        <div class="form-group">
                            <input name="txtSubject" type="text" class="form-control">

                        <div class="form-group">
                            <textarea name="txtDescription" cols="30" rows="4" class="form-control"></textarea>

                        <div class="form-group">
                            <label>Upload Document</label>
                            <input name="fileAttach" type="file">

                        <div class="form-group">
                            <input type="submit" name="Submit" value="Send now" class="pull-right">


                <div class="col-md-3"></div>


Step 2

Now we need to action file form action where we can write a code for uploading file and sending mail, lets create send_mail.php file and put the following code .



$strTo = $_POST["txtTo"];
$strSubject = $_POST["txtSubject"];
$strMessage = nl2br($_POST["txtDescription"]);

//*** Uniqid Session ***//
$strSid = md5(uniqid(time()));

//from name you can replace it
$from_name = "Rathorji";

//from email
$from_email = 'support@rathrji.in';

$strHeader = "";
$strHeader .= "From: " . $from_name . "<" . $from_email . ">\nReply-To: " . $from_email . "";

$strHeader .= "MIME-Version: 1.0\n";
$strHeader .= "Content-Type: multipart/mixed; boundary=\"" . $strSid . "\"\n\n";
$strHeader .= "This is a multi-part message in MIME format.\n";

$strHeader .= "--" . $strSid . "\n";
$strHeader .= "Content-type: text/html; charset=utf-8\n";
$strHeader .= "Content-Transfer-Encoding: 7bit\n\n";
$strHeader .= $strMessage . "\n\n";

//*** Attachment ***//
if ($_FILES["fileAttach"]["name"] != "") {
    $strFilesName = $_FILES["fileAttach"]["name"];
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"])));
    $strHeader .= "--" . $strSid . "\n";
    $strHeader .= "Content-Type: application/octet-stream; name=\"" . $strFilesName . "\"\n";
    $strHeader .= "Content-Transfer-Encoding: base64\n";
    $strHeader .= "Content-Disposition: attachment; filename=\"" . $strFilesName . "\"\n\n";
    $strHeader .= $strContent . "\n\n";

$flgSend = @mail($strTo, $strSubject, null, $strHeader);

 if($flgSend) {
    echo "Mail send completed.";
} else {
    echo "Cannot send mail.";

You can replace your "From Name" and "From Email in above code".

Step 3

Now we need to run a application it will not work on localhost so I'll suggest you to use your live server for sending mail with attachment 


Thanks, May this example will help you.