尝试使用phpmailer发送多个文件时,我使用此语句检查是否至少上传了一个文件:
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile) or move_uploaded_file($_FILES['userfile2']['tmp_name'], $uploadfile2) or move_uploaded_file($_FILES['userfile3']['tmp_name'], $uploadfile3)) {
并使用此代码附加文件
$mail->AddEmbeddedImage($uploadfile, 'file', 'Uploaded file');
$mail->AddEmbeddedImage($uploadfile2, 'file2', 'Uploaded file 2');
$mail->AddEmbeddedImage($uploadfile3, 'file3', 'Uploaded file 3');
然而,它只发送第一个选定的文件,而不发送其后可能出现的其他文件。只要发现条件为真,if语句就会停止。
有人可以帮助我吗?
答案 0 :(得分:0)
实际上...... if语句在第一个条件匹配时停止...所以构建一个新的逻辑
e.g。
<?php
$success = array();
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) $success[] = $uploadfile;
if(move_uploaded_file($_FILES['userfile2']['tmp_name'], $uploadfile2)) $success[] = uploadfile2;
if(move_uploaded_file($_FILES['userfile3']['tmp_name'], $uploadfile3)) $success[] = uploadfile3;
if($success) {
// Your code here
}
答案 1 :(得分:0)
请使用addAttachment尝试而不是AddEmbeddedImage。
$mail->addAttachment($uploadfile, 'Uploaded file');
$mail->addAttachment($uploadfile2, 'Uploaded file 2');
$mail->addAttachment($uploadfile3, 'Uploaded file 3');
答案 2 :(得分:0)
这与PHPMailer无关。它只是对PHP中表达式评估的基本理解。
如果你在if
条件的第一部分有一个真实的结果,它不需要评估剩下的条件就知道它将整体评估为真,所以其他函数永远不会被调用
单独检查每个文件,它会起作用。