Php 通过电子邮件发送附件

Php 通过电子邮件发送附件,php,email,phpmailer,Php,Email,Phpmailer,我从未接触过PHP,但负责修复实习生的代码 我正在尝试将上载的文件附加到我正在发送的电子邮件中。电子邮件发送,但没有文件。我正在使用PHPMailerAutoUpload.php(在GitHub上找到) 这是我正在使用的代码 附件通过move\u上传的\u文件保存 move_uploaded_file( $resume['tmp_name'] , $up_dir .basename( $random_var . '_wse_' . $resume['name'] ) ) 注意:我已经注释掉了m

我从未接触过PHP,但负责修复实习生的代码

我正在尝试将上载的文件附加到我正在发送的电子邮件中。电子邮件发送,但没有文件。我正在使用PHPMailerAutoUpload.php(在GitHub上找到)

这是我正在使用的代码

附件通过
move\u上传的\u文件保存

move_uploaded_file( $resume['tmp_name'] , $up_dir .basename( $random_var . '_wse_' . $resume['name'] ) )
注意:我已经注释掉了
move\u uploaded\u file
功能,以确保我没有删除附件

        require_once('phpmailer/PHPMailerAutoload.php');
        $mail = new PHPMailer(true);
        $mail->IsSMTP();
        $mail->SMTPDebug = 2;
        $mail->SMTPAuth = false;
        $mail->Host = 'oursmtp';
        $mail->Port = 25;

        $mail->setFrom( $_POST['E-mail'] , $_POST['first_name'] . " " . $_POST['last_name'] );
        $mail->addAddress( 'test@test.com' );
        $mail->Subject = "Test" . @date('M/D/Y');
        $mail->msgHTML($msgDoc);

        if (isset($_FILES['uploaded_file']) &&
        $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
        $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'],
                             $_FILES['uploaded_file']['name']);
        }


        if (!$mail->send()) {
            $mailError = $mail->ErrorInfo;
            $outcomeArr = array(
                                'outcome'=>'failure',
                                'message'=>'Error' . $mailError
                            );              
            echo json_encode( $outcomeArr );
            exit();             
        } else {
            // success
            $outcomeArr = array(
                                'outcome'=>'success',
                                'message'=>'Thank you'
                            );      
            echo json_encode( $outcomeArr );
        }
据我所知,
$\u FILES
是PHP中上传文件的临时存储。使用此代码,电子邮件将发送,但不带附件(仅指向上载文件位置的链接)


我尝试了以下内容,但对我不起作用。

你的实习生显然是一名摇滚明星,不需要检查或指出错误情况,即使没有附件或上传过程中出现错误,邮件也会发送。将这些位更改为代码,告诉您文件未附加的原因:

if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
    if( ! $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'], $_FILES['uploaded_file']['name']) ) {
        echo 'Error adding attachment: ' . $mail->ErrorInfo;
    }
} else if( !isset($_FILES['uploaded_file']) ) {
    echo 'No uploaded file found';
} else {
    echo 'Uploaded file error: ' . $_FILES['uploaded_file']['error'];
}

好的-现在我看到它说
没有找到上传的文件
。。嗯,真奇怪。当我使用
move\u upload\u file()
方法时,它是有效的,因此应该有一个文件。应该注意的是
$\u FILES['upload\u file']
中的
upload\u file
位不是一个静态值,它是上传表单中文件输入字段的名称。在原始的未更改脚本中,
$resume
是如何定义的?应该具有正确的字段名/数组索引。它的定义类似于
Foreach($\u FILES as$resume):
这是。。。有趣
var\u dump($\u文件)
应该告诉您应该使用什么数组索引。将
$\u文件['upload\u file']
替换为
$\u文件['resume']