douruhu4282 2014-05-08 10:17
浏览 43
已采纳

将文件附加到电子邮件

I have this form to send an email and the visitor can send an attachment with his email as will everything gos well the email sent but the attachment comes to the email like this

if he uploaded any C.V the C.V will be attached to this Email --_1_c4fe3315ccb7d6076c71d64ec5265ecc Content-Type: multipart/alternative; boundary="_2_c4fe3315ccb7d6076c71d64ec5265ecc"

--_2_c4fe3315ccb7d6076c71d64ec5265ecc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit

--_2_c4fe3315ccb7d6076c71d64ec5265ecc-- --_1_c4fe3315ccb7d6076c71d64ec5265ecc Content-Type: application/octet-stream; name="Yousef.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment

--_1_c4fe3315ccb7d6076c71d64ec5265ecc--

I can see my attached file name but no attachment come with email

the HTML form

<form id="sendYourCV" method="post" action="<?php $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data"
                  class="padding_16px">

                <div class="padding_16 clear_both">
                    <p class="f_right complaints_form"><label for="cSector">القطاع :</label></p>
                    <select name="cSector" id="cSector" class="styled-select f_right">
                        <?php
                        $getSections = $db->prepare("SELECT * FROM career_selection_sec_arabic");
                        $getSections->execute();
                        $res = $getSections->get_result();
                        while ($s = $res->fetch_object()) {
                            echo "<option value='$s->sector'>$s->sector</option>";
                        }
                        ?>
                    </select>
                </div>

                <div class="padding_16 clear_both">
                    <p class="f_right complaints_form"><label for="cAdministration">الادارة :</label></p>
                    <select name="cAdministration" id="cAdministration" class="styled-select f_right">
                        <?php
                        $getSections = $db->prepare("SELECT * FROM career_selection_admin_arabic");
                        $getSections->execute();
                        $res = $getSections->get_result();
                        while ($a = $res->fetch_object()) {
                            echo "<option value='$a->admin'>$a->admin</option>";
                        }
                        ?>
                    </select>
                </div>

                <div class="padding_16 clear_both">
                    <p class="f_right complaints_form"><label for="cBranch">الفرع :</label></p>
                    <select name="cBranch" id="cBranch" class="styled-select f_right">
                        <?php
                        $getSections = $db->prepare("SELECT * FROM career_selection_bran_arabic");
                        $getSections->execute();
                        $res = $getSections->get_result();
                        while ($s = $res->fetch_object()) {
                            echo "<option value='$s->branch'>$s->branch</option>";
                        }
                        ?>
                    </select>
                </div>

                <div class="padding_16 clear_both">
                    <p class="f_right complaints_form"><label for="cCareer">الوظيفة :</label></p>
                    <select name="cCareer" id="cCareer" class="styled-select f_right">
                        <?php
                        $getSections = $db->prepare("SELECT * FROM career_selection_car_arabic");
                        $getSections->execute();
                        $res = $getSections->get_result();
                        while ($s = $res->fetch_object()) {
                            echo "<option value='$s->career'>$s->career</option>";
                        }
                        ?>
                    </select>
                </div>

                <div class="padding_16 clear_both m_top_10px">
                    <p class="f_right complaints_form">الاسم :</p>
                    <input name="cName" type="text" class="form_textarea_rec f_right" placeholder="اسمك"/>
                </div>
                <div class="padding_16 clear_both m_top_10px">
                    <p class="f_right complaints_form">التليفون :</p>
                    <input name="cTelephone" type="text" class="form_textarea_rec f_right" placeholder="تليفونك"/>
                </div>
                <div class="padding_16 clear_both m_top_10px">
                    <p class="f_right complaints_form">الايميل :</p>
                    <input name="cEmail" type="text" class="form_textarea_rec f_right" placeholder="بريدك الالكتروني"/>
                </div>
                <div class="padding_16 clear_both m_top_10px">
                    <p class="f_right complaints_form">الرسالة :</p>
                <span class="margin_49px">
                  <textarea name="cMessage" class="form_textarea_vertical_2 f_right m_left_6px" placeholder="رسالتك"
                            type="text"></textarea>
                </span>
                </div>
                <div class="padding_16 clear_both m_top_10px">
                    <p class="f_right complaints_form"></p>
                </div>
                <div class="padding_16 clear_both m_top_10px">
                    <p class="f_right complaints_form">سيرتك الذاتية :</p>
                    <input type="file" name="upFile" id="upFile" class="f_right" style="direction:rtl;"/>
                </div>

                <input type="submit" name="submit" id="submit" class="btn_main m_bottom_18px m_left_286px"
                       value="ارسل"/>
            </form>

this is my form code that I used

<?php
error_reporting(E_ALL | E_STRICT);
if (isset($_POST['submit'])) {
    $sector = $_POST['cSector'];
    $cAdministration = $_POST['cAdministration'];
    $cBranch = $_POST['cBranch'];
    $cCareer = $_POST['cCareer'];
    $name = $_POST['cName'];
    $telephone = $_POST['cTelephone'];
    $cEmail = $_POST['cEmail'];
    $cMessage = $_POST['cMessage'];

    $recipient = 'info@test.com';
    $subject = "Someone apply for career";

    $myCv = $_FILES['upFile']['name'];
    $attachment = chunk_split(base64_encode(file_get_contents($_FILES['upFile']['tmp_name'])));
    $boundary = md5(date('r', time()));

    $content = "This information is for someone who apply for your new career

    Sector Applied For:" . $sector . ",

    Administration Applied For:" . $cAdministration . ",

    Branch Applied For:" . $cBranch . ",

    Career Applied For:" . $cCareer . ",

    His Name Is: " . $name . ",

    His Phone Number: " . $telephone . ",

    His Message: " . $cMessage . ",

    His Email: " . $cEmail . ",
 if he uploaded any C.V the C.V will be attached to this Email
    --_1_$boundary
    Content-Type: multipart/alternative; boundary=\"_2_$boundary\"

    --_2_$boundary
    Content-Type: text/plain; charset=\"UTF-8\"
    Content-Transfer-Encoding: 7bit

    --_2_$boundary--
    --_1_$boundary
    Content-Type: application/octet-stream; name=\"$myCv\"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment

    $attachment
    --_1_$boundary--";

    $headers = "From:info@test.com
Reply-To:info@test.com";
    $headers .= "
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=\"_1_$boundary\"";

    $sent = mail($recipient, $subject, $content, $headers);
    if ($sent) {
        header("Location:index.php?pid=17&carr=your message has been sent, we will contact you soon.");
    } else {
        echo "Error";
    }
}
?>

I copied this code from some online tutorial but can't understand why it does not go will with the attachment

thanks in advance

  • 写回答

5条回答 默认 最新

  • donglv6747 2014-05-19 13:46
    关注

    Hay @Mikky you just need to adjust you code try this

        <?php
    error_reporting(E_ALL | E_STRICT);
    if (isset($_POST['submit'])) {
        $position = $c;
        $name = $_POST['cName'];
        $telephone = $_POST['cTelephone'];
        $cEmail = $_POST['cEmail'];
        $myCv = $_FILES['upFile']['name'];
    
        $strTo = 'info@test.com';
        $strSubject = "Someone apply for career";
        $strMessage = nl2br("This information is for someone who apply for your new career
    
        Position Applied For:" . $position . ",
    
        His Name Is: " . $name . ",
    
        His Phone Number: " . $telephone . ",
    
        His Email: " . $cEmail . " 
    ");
    
    //*** Uniqid Session ***//
        $strSid = md5(uniqid(time()));
    
        $strHeader = "";
        $strHeader .= "From:info@test.com
    Reply-To:info@test.com";
    
        $strHeader .= "MIME-Version: 1.0
    ";
        $strHeader .= "Content-Type: multipart/mixed; boundary=\"" . $strSid . "\"
    
    ";
        $strHeader .= "This is a multi-part message in MIME format.
    ";
    
        $strHeader .= "--" . $strSid . "
    ";
        $strHeader .= "Content-type: text/html; charset=utf-8
    ";
        $strHeader .= "Content-Transfer-Encoding: 7bit
    
    ";
        $strHeader .= $strMessage . "
    
    ";
    
    //*** Attachment ***//
        if ($_FILES['upFile']['name'] != "") {
            $strFilesName = $_FILES["upFile"]["name"];
            $strContent = chunk_split(base64_encode(file_get_contents($_FILES["upFile"]["tmp_name"])));
            $strHeader .= "--" . $strSid . "
    ";
            $strHeader .= "Content-Type: application/octet-stream; name=\"" . $strFilesName . "\"
    ";
            $strHeader .= "Content-Transfer-Encoding: base64
    ";
            $strHeader .= "Content-Disposition: attachment; filename=\"" . $strFilesName . "\"
    
    ";
            $strHeader .= $strContent . "
    
    ";
        }
    
    
        $flgSend = @mail($strTo, $strSubject, null, $strHeader); // @ = No Show Error //
    
        if ($flgSend) {
            header("Location:index.php?pid=17&msg=done");
        } else {
            echo "Cannot send mail.";
        }
    }
    ?>
    

    let me know if it's working now with you

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器