PHPMAILER多个附件?如何去做


PHPMAILER Multiple attachment? How?

我有一个简单的表单:

    <form>
    ....
    <input type="hidden" name="MAX_FILE_SIZE" value="100000"> <input name="allegato" type="file" multiple>
    ....
    </form>

和用PHPmailer构建的验证脚本php:

<?php session_start();
//Percorso dove raccoglieremo gli allegati
$percorso = "allegati";
//Raccolta dati form 
$marca = $_POST['marca'];
$modello = $_POST['modello'];
$immatricolazione = $_POST['immatricolazione'];
$carburante = $_POST['carburante'];
$cilindrata = $_POST['cilindrata'];
$nditarga = $_POST['nditarga'];
$infosinistro = $_POST['infosinistro'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$datipers = $_POST['datipers'];
$newsletter = $_POST['newsletter']; 
//Upload dell'allegato
move_uploaded_file($_FILES['allegato']['tmp_name'], $percorso.$_FILES['allegato']['name']);
//Messaggio
$oggetto = "Nuova richiesta preventivo";
$messaggio = " Hai ricevuto i seguenti dati da $nome $cognome <br> Marca: $marca <br> Modello: $modello 'r'n Immatricolazione: $immatricolazione 'r'n Carburante: $carburante 'r'n Cilindrata: $cilindrata 'r'n N. di Targa: $nditarga 'r'n Maggiori info sul Sinistro: $infosinistro 'r'n'r'n Dati del cliente: $nome $cognome 'r'n N. di telefono: $telefono 'r'n Indirizzo e-mail: $email 'r'n'r'n $datipers 'r'n $newsletter 'r'n";
//Inclusione della libreria
require_once("class.phpmailer.php");
//Creiamo un oggetto PHPMailer e ne settiamo le variabili
$mail = new PHPMailer();
$mail->From = "$email";
$mail->FromName = "$email";
$mail->AddAddress("antonio.junior98@libero.it");
$mail->IsHTML(true);
$mail->Subject = $oggetto;
$mail->Body = $messaggio;
$mail->AddAttachment($percorso.$_FILES['allegato']['name']);
//Inviamo l'email
if($mail->Send())
echo "Email inoltrata correttamente";
?>

我的问题是多个附件。我不知道如何添加更多。我工作了一个月,但我不能。请问你有什么解决办法吗?谢谢你。

小安东尼奥:)

变化

$mail->AddAttachment($percorso.$_FILES['allegato']['name']);

$mail->AddAttachment($percorso.$_FILES['allegato']['tmp_name']);

并对另一个文件再次使用该方法,它会将其添加到附加文件中!

编辑:

我意识到你在文件输入中有"multiple"属性。

您希望所有这些文件都附加。好的,我们必须知道,当你有"multiple"属性时,文件将被存储在一个'weird'数组中。

第一个文件是$_FILES['inputname']['tmp_name'][0]第二个文件是$_FILES['inputname']['tmp_name'][1]

以此类推。这就是添加这些附件的方式。

如果你想获取多个上传文件的大小,你可以使用:

`$_FILES['inputname']['size'][0]` -> Size of the first file
`$_FILES['inputname']['size'][1]` -> Size of the second file

试试这个

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