2 回答

TA贡献1877条经验 获得超1个赞
我解决了这样的问题:
// First e-mail to recipient 1
$mail = new PHPMailer;
$mail->setFrom('example@example.com');
$mail->addAddress('recipient1@example.com');
$mail->Subject = 'Subject';
$mail->isHTML(true);
$mail->Body = '...';
// Attach multiple files one by one
for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
$uploadfile = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['userfile']['name'][$ct]));
$filename = $_FILES['userfile']['name'][$ct];
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
$mail->addAttachment($uploadfile, $filename);
} else {
$msg .= 'Failed to move file to ' . $uploadfile;
}
}
// Altered e-mail to recipient 2
$mail->ClearAddresses(); // avoid recipient 1 getting this altered mail
$mail->addAddress('recipient2@example.com');
$mail->Subject = 'New subject overwriting the first one';
$mail->Body = 'New body overwriting the first one';
$mail->send(); // send both mails
这样,同一封邮件基本上会发送两次,包括附件,但会通过覆盖(例如,主题和正文)进行一些更改。

TA贡献1856条经验 获得超11个赞
发送第一封邮件时,您已将上传的文件从临时存储区中移出,因此在第二次尝试中不再存在。
move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)
您需要先移动上载的文件,然后使用该变量$uploadfile
两次。
您实际上应该将所有这些放到一个函数中,这样您也不会重复自己。
- 2 回答
- 0 关注
- 190 浏览
添加回答
举报