使用PHPmailer发送附件-返回.dat文件
希望有人能指出我错过了什么 我有一个脚本,我把它放在我的页面上,并更新了HTML 虽然图像上传很好,电子邮件也可以通过,但文件附件是使用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_
.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);