在电子邮件中发送附件

时间:2014-10-08 17:05:44

标签: php email phpmailer

我从未接触过PHP,但其任务是修复实习生的代码..

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

这是我正在使用的代码。

正在通过move_uploaded_file

保存附件
move_uploaded_file( $resume['tmp_name'] , $up_dir .basename( $random_var . '_wse_' . $resume['name'] ) )

注意:我已注释掉move_uploaded_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 );
        }

根据我的阅读,$_FILES是PHP中上传文件的临时存储。使用此代码,电子邮件会发送,但没有附件(只有指向上传文件位置的链接)。

我尝试关注this,但它并不适合我。

1 个答案:

答案 0 :(得分:1)

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

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'];
}