使用PHPmailer发送附件-返回.dat文件

使用PHPmailer发送附件-返回.dat文件,php,phpmailer,Php,Phpmailer,希望有人能指出我错过了什么 我有一个脚本,我把它放在我的页面上,并更新了HTML 虽然图像上传很好,电子邮件也可以通过,但文件附件是.dat文件,而不是正确的扩展名 以下是我的PHP,以防我所更改的内容不符合要求: if (array_key_exists('userfile', $_FILES)) { $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'])); if (move_uploaded_

希望有人能指出我错过了什么

我有一个脚本,我把它放在我的页面上,并更新了HTML

虽然图像上传很好,电子邮件也可以通过,但文件附件是
.dat
文件,而不是正确的扩展名

以下是我的PHP,以防我所更改的内容不符合要求:

if (array_key_exists('userfile', $_FILES)) {

$uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name']));
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {

    require 'PHPMailerAutoload.php';
    $mail = new PHPMailer;
    $mail->setFrom('my@email.com', 'Competitions');
    $mail->addAddress('jg@email.com', 'JG');
    $mail->Subject = 'Competition Entry';
    $mail->msgHTML("My message body");

    $mail->addAttachment($uploadfile, 'Competiton Entry Attachment');
    if (!$mail->send()) {
        $err[] = "Mailer Error - didn't send email" . $mail->ErrorInfo;
    } else {
        $done[] = "Message sent!";
    }

} else {
    $err[] = 'Failed to move file to ' . $uploadfile;
}

}
非常感谢您提前更改

$mail->addAttachment($uploadfile, 'Competiton Entry Attachment');


您没有为文件名提供扩展名:
“Competition Entry Attachment”
没有扩展名。请尝试:
'Competiton\u Entry\u Attachment.doc'
或任何其他扩展名。如果这不起作用,给它一个类型。请参阅文档。@KIKOSoftware-谢谢,这很有效,但我希望我可以为此上载任何类型的文件。。。。不限于一个问题,如你所建议的
.doc
,这是另一个我希望你能自己解决的问题。。。但没必要,Shijin T R会告诉你怎么做。@KIKOSoftware谢谢你!谢谢你的回复。但是,当我尝试时,它返回了
竞赛条目附件????感谢记录,。我得到了一个更简单的解决方案:而不是:
$mail->addAttachment($uploadfile,'Competiton Entry Attachment')只需写:
$mail->addAttachment($uploadfile,'Competiton\u Entry\u Attachment.jpg')当然,只有当所有文件都是JPG,如果发送的其他文件是PNG、TIFF等,这一个才有效。它们不会作为原始扩展名接收
$name = $_FILES['userfile']['name'];

$ext = end((explode(".", $name)));

$mail->addAttachment($uploadfile, 'Competiton Entry Attachment.'.$ext);