[英]PHPmailer multiple attachments only sends first
當嘗試使用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語句就會停止。
有人能幫我嗎?
實際上...如果在第一個條件匹配時語句停止...因此建立一個新邏輯
例如
<?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
}
請嘗試使用addAttachment代替AddEmbeddedImage。
$mail->addAttachment($uploadfile, 'Uploaded file');
$mail->addAttachment($uploadfile2, 'Uploaded file 2');
$mail->addAttachment($uploadfile3, 'Uploaded file 3');
這與PHPMailer無關。 這只是對PHP中的表達式求值的基本了解。
如果您在if
條件的第一部分上獲得了正確的結果,則無需評估其余條件就可以知道總體上將為true,因此永遠不會調用其他函數。
分別檢查每個文件,它將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.