文件附件不会在php中发送邮件

时间:2016-06-28 09:29:44

标签: php html

我正在制作一个html中的表单,其中有一个上传按钮和用户的一些细节。我想发送表单的所有细节以及从用户上传的文件。但它不起作用。我是发布我的html代码和Php代码的代码。告诉我我失踪的地方。

    <!DOCTYPE html>
<html>
<head>

<link rel="stylesheet" type="text/css" href="style.css" />

<body>


    <div class="element">
       <a href="index.php"><img src="logo.gif"></a>
           <br><br>
    <div class="new"></div>
    <center><h2>Submit Your Information  below</h2></center>

    <form name="registration" method="post" action="fromaction.php" enctype="mutipart/form-data" autocomplete="off"> 
        <!-- <span class="erorr"> --->
        <div class="image"></div>
        <label>Name:</label>
        <input id="box1" placeholder="Type here" type="text" name="Name:" required>
        <br><br>

    <label>Email:</label><input id="box2" placeholder="Type here" type="email" name="Email:" required >
        <br>
        <br>

    <label>Time period in which you will join</label>
            <select id ="myList" name="Time Required by user to Join the company" >
                <option value="Immediate" required>Immediate</option>
                <option value="Less than one month">Less than one month</option>
                <option value="1 month">1 month</option>
                <option value="2 months">2 months</option> 
            </select>

        <br><br>

    <label>Linkedin Link:</label>
        <input type="text" id="box3" name="Linkedin ID" placeholder="https://www" required >
         <br><br>

        <label for="workexcel">What job responsibilities and duties do you excel at?</label>

        <textarea name="At which The User is Excel in:" placeholder="Type Here.." id="add" rows="2" cols="2"  maxlength="300" required></textarea>

        <br><br>  

        <label>Tell me about a challenge or conflict you've faced at work, and how you dealt with it.</label>

            <textarea name="How user dealt with challenge or conflict" placeholder="Type Here.." rows="2" cols="2" maxlength="300"  required ></textarea>        
        <br><br>


            <label for"twork">What is your greatest professional achievement?</label>

                <textarea name="User Professional achievement:" placeholder="Type here.." id="twork" rows="10" cols="30" maxlength="300" required></textarea>
                <br>

                    <br><br>

        <label for="det">Tell us something about Yourself</label>&nbsp;&nbsp;

        <textarea name= "Details About the user" placeholder="Type here.." id="det" rows="10" cols="30" maxlength="300" required ></textarea>

            <br><br>

        <label for="resume">Attach Your Resume here </label>

        <input type="file" name="uploaded_file">
        <br><br>


        <input type="checkbox"  value="Area" required>&nbsp;&nbsp;I understand that I am applying for the job which is of my Area of field.
        <br>
        <h1><input id="submit" type="Submit" value="Submit"></h1>


        <!-- </span> -->
    </form>     


    </div>
    </body>
    </head>
    </html>

PHP代码

    <?php

    $c_name=$_POST['Name:']; // Contain Candidate name 
    $c_email=$_POST['Email:']; // Contain email 
    $c_time=$_POST['Time Required by user to Join the company']; 
    $c_linkedin=$_POST['Linkedin ID'];
    $c_Excel=$_POST['At which The User is Excel in:'];
    $c_challenge=$_POST['How user dealt with challenge or conflict'];
    $c_professional=$_POST['User Professional achievement:'];
    $c_details=$_POST['Details About the user'];

    $file_name=$_FILES['uploaded_file']['name'];
    $temp_name=$_FILES['uploaded_file']['tmp_name'];
    $file_type=$_FILES['uploaded_file']['type'];

    //get the extension of the file 
    $base = basename($file_name);
    $extension=substr($base, strlen($base)-4,strlen($base));
    $allowed_extensions=array(".doc","docx",".pdf",".zip",".png");

    if(in_array($extension,$allowed_extensions)){

        $from = $_POST['Email:'];
        $to = "singhiabhin26@gmail.com";
        $subject = "testing";

        $message = "<table width='800' border='1' cellspacing='0' cellpadding='8' bordercolor='#CCCCC'>      
        <tr>        
              <td colspan='2' bgcolor='#CDD9F5'><strong>Candidate Details</strong></td>               
        </tr> 
        <tr>        
            <td width='168' bgcolor='#FFFFEC'><strong>Candidate Name</strong></td>        
            <td width='290' bgcolor='#FFFFEC'>$c_name</td>      
        </tr>      
        <tr>        
            <td bgcolor='#FFFFDD'><strong>E-mail ID</strong></td>        
            <td bgcolor='#FFFFDD'>$c_email</td>      
        </tr>
        <tr>        
            <td bgcolor='#FFFFDD'><strong>Time required by user to Join the Company</strong></td>        
            <td bgcolor='#FFFFDD'>$c_time</td>     
        </tr>                        
        <tr>        
            <td bgcolor='#FFFFDD'><strong>Linkedin ID</strong></td>        
            <td bgcolor='#FFFFDD'>$c_linkedin</td>     
        </tr>                        
        <tr>        
            <td bgcolor='#FFFFDD'><strong>Excel</strong></td>        
            <td bgcolor='#FFFFDD'>$c_Excel</td>
        </tr>                        
            <tr>        
            <td bgcolor='#FFFFDD'><strong>challenge</strong></td>        
            <td bgcolor='#FFFFDD'>$c_challenege</td>     
        </tr>                      
        <tr>        
            <td bgcolor='#FFFFDD'><strong>professional</strong></td>        
            <td bgcolor='#FFFFDD'>$c_professional</td>  
        </tr>                        
        <tr>        
            <td bgcolor='#FFFFDD'><strong>details</strong></td>        
            <td bgcolor='#FFFFDD'>$c_details</td>     
        </tr>                        
     </table>";

        $file=$temp_name;
        $content = chunk_split(base64_encode(file_get_contents($file)));
        $uid=md5(uniqid(time()));

        $header= "From: ".$from."\r\n";
        $header.= "reply to:" .$replyto."\r\n";
        $header.= "MIME-Version: 1.0\r\n";

        $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
        $header .="this is multipart mesage in MIME format.\r\n";
        $header .= "--".$uid."\r\n";
        $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
        $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
        $header .= $message."\r\n\r\n";

        $header .= "--".$uid."\r\n";
        $header .= "Content-type:".$file_type."; name=\"".$file_name."\"\r\n";
        $header .= "Content-Transfer-Encoding: base64\r\n";
        $header .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n\r\n";

        $header .= $content."\r\n\r\n";

        if(mail($to, $subject, "", $header)){
            echo "success";
        }else{
            echo"fail";
        }

    }else{
        echo "file type not allowed";
    }
?>  

3 个答案:

答案 0 :(得分:1)

您可以使用phpmailer类以及此功能

    function send_mail_with_attachment($upload_path,$from_name,$from_mail,$replyto,$to,$message,$filenames,$subject) {


$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->setFrom($from_mail, $from_name);
$mail->addAddress($to);     // Add a recipient

$mail->addBCC('test@test.net');
 $mail->addBCC('test@test.com');
$mail->addAttachment($upload_path.$filenames);         // Add attachments
   // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = $subject;
$mail->Body    = $message;
$mail->AltBody = $message;

if(!$mail->send()) {

    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'success';
}




    } 

只需下载phpmailer类,require_once('includes/php_mailer/class.phpmailer.php');将其包含在您的代码中。我希望它对你有用

答案 1 :(得分:0)

使用php发送电子邮件的更好方法。我建议你尝试使用phpMailer。你可以得到它here。 phpMailer相当不错,可以很好地处理附件

答案 2 :(得分:0)

试试这个工作正常......!

<div class="element">
   <a href="http://tenmiles.com/index.php"><img src="logo.gif"></a>
       <br><br>
<div class="new"></div>
<center><h2>Submit Your Information  below</h2></center>

<form  action="1.php" method="post" enctype="multipart/form-data" autocomplete="off"> 
    <!-- <span class="erorr"> --->
    <div class="image"></div>
    <label>Name:</label>
    <input id="box1" placeholder="Type here" type="text" name="Name" required>
    <br><br>

<label>Email:</label><input id="box2" placeholder="Type here" type="email" name="Email" required >
    <br>
    <br>

<label>Time period in which you will join</label>
        <select id ="myList" name="Time" >
            <option value="Immediate" required>Immediate</option>
            <option value="Less than one month">Less than one month</option>
            <option value="1 month">1 month</option>
            <option value="2 months">2 months</option> 
        </select>

    <br><br>

<label>Linkedin Link:</label>
    <input type="text" id="box3" name="Linkedin_ID" placeholder="https://www" required >
     <br><br>

    <label for="workexcel">What job responsibilities and duties do you excel at?</label>

    <textarea name="excel" placeholder="Type Here.." id="add" rows="2" cols="2"  maxlength="300" required></textarea>

    <br><br>  

    <label>Tell me about a challenge or conflict you've faced at work, and how you dealt with it.</label>

        <textarea name="conflict" placeholder="Type Here.." rows="2" cols="2" maxlength="300"  required ></textarea>        
    <br><br>


        <label for"twork">What is your greatest professional achievement?</label>

            <textarea name="Professional" placeholder="Type here.." id="twork" rows="10" cols="30" maxlength="300" required></textarea>
            <br>

                <br><br>

    <label for="det">Tell us something about Yourself</label>&nbsp;&nbsp;

    <textarea name= "About" placeholder="Type here.." id="det" rows="10" cols="30" maxlength="300" required ></textarea>

        <br><br>

    <label for="resume">Attach Your Resume here </label>

    <input type="file" name="smtpimg">
    <br><br>


    <input type="checkbox"  value="Area" required>&nbsp;&nbsp;I understand that I am applying for the job which is of my Area of field.
    <br>
    <h1><input id="submit" type="Submit" name="submit" value="Submit"></h1>


    <!-- </span> -->
</form>     


</div>
</body>
</head>
</html>

你的php在这里使用smtp代码

<?php
include "PHPMailer_5.2.4/class.phpmailer.php"; 
if(isset($_POST["submit"])){
               // $email = $_POST["emailfrom"];
               $target_dir = "smtpimg/";
$target_file= $target_dir .time().basename($_FILES['smtpimg']['name']);
$movefile=move_uploaded_file($_FILES['smtpimg']['tmp_name'], $target_file);
$message = "<table width='800' border='1' cellspacing='0' cellpadding='8' bordercolor='#CCCCC'>      
        <tr>        
              <td colspan='2' bgcolor='#CDD9F5'><strong>Candidate Details</strong></td>               
        </tr> 
        <tr>        
            <td width='168' bgcolor='#FFFFEC'><strong>Candidate Name</strong></td>        
            <td width='290' bgcolor='#FFFFEC'>'".$_POST['Name']."'</td>      
        </tr>      
        <tr>        
            <td bgcolor='#FFFFDD'><strong>E-mail ID</strong></td>        
            <td bgcolor='#FFFFDD'>'".$_POST['Name']."'</td>      
        </tr>
        <tr>        
            <td bgcolor='#FFFFDD'><strong>Time required by user to Join the Company</strong></td>        
            <td bgcolor='#FFFFDD'>'".$_POST['Email']."'</td>     
        </tr>                        
        <tr>        
            <td bgcolor='#FFFFDD'><strong>Linkedin ID</strong></td>        
            <td bgcolor='#FFFFDD'>'".$_POST['Linkedin_ID']."'</td>     
        </tr>                        
        <tr>        
            <td bgcolor='#FFFFDD'><strong>Excel</strong></td>        
            <td bgcolor='#FFFFDD'>'".$_POST['excel']."'</td>
        </tr>                        
            <tr>        
            <td bgcolor='#FFFFDD'><strong>challenge</strong></td>        
            <td bgcolor='#FFFFDD'>'".$_POST['conflict']."'</td>     
        </tr>                      
        <tr>        
            <td bgcolor='#FFFFDD'><strong>professional</strong></td>        
            <td bgcolor='#FFFFDD'>'".$_POST['Professional']."'</td>  
        </tr>                        
        <tr>        
            <td bgcolor='#FFFFDD'><strong>details</strong></td>        
            <td bgcolor='#FFFFDD'>'".$_POST['About']."'</td>     
        </tr>                        
     </table>";
     print_r($message);
$mail = new PHPMailer(); 

$mail->IsSMTP(); 
$mail->SMTPDebug = 1; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = 'ssl'; 
$mail->Host = "smtp.gmail.com";

$mail->Port = 465; 
$mail->IsHTML(true);
$mail->Username = "yourusername@gmail.com";
$mail->Password = "yourgmailpassword";
$mail->AddReplyTo("reply@yourdomain.com", "Reply name");
$mail->AddAddress($_POST['Email'],'ashu');
$mail->Subject = "SMTP Receivced";
$mail->Body = "<b>Succesfully SMTP Receivced</b>";
$mail->AddAttachment($target_file);
$mail->MsgHTML($message);
$text = 'Text version of email';
$html = '<html><body>HTML version of email</body></html>';
$file = 'index.php';
$crlf = "\n";
$hdrs = array(
              'From'    => 'you@yourdomain.com',
              'Subject' => 'Test mime message'
              );
if($mail->send($hdrs))
 {
echo "<script> alert('Successfully Mailed');window.location = 'pra-2.php';</script>";
}
else{
echo "Mailed Error: " . $mail->ErrorInfo;
}
}
?>

enter image description here