簡體   English   中英

如何使用 PHPMailer 向 Email 添加多個附件

[英]How to Add Multiple Attachments to an Email Using PHPMailer

我一次只能將一個 pdf 連接到 email。 有人可以幫我弄清楚如何使用 PHPMailer 向 email 添加多個附件嗎? 我最初嘗試只使用多個相互添加的附件語句。

$file1Name = $_FILES['myfile1']['name'];
$file1Path = $_FILES['myfile1']['tmp_name'];
$file2Name = $_FILES['myfile2']['name'];
$file2Path = $_FILES['myfile2']['tmp_name'];
$file3Name = $_FILES['myfile3']['name'];
$file3Path = $_FILES['myfile3']['tmp_name'];
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = '587';
$mail->SMTPAuth = true;
$mail->Username = 'email@gmail.com';
$mail->Password = 'password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
// . . .
$mail->Body = $mail_body;
$mail->addAttachment($file1Path, $file1Name);
$mail->addAttachment($file2Path, $file2Name);
$mail->addAttachment($file3Path, $file3Name);
$mail->Send();

這沒有用。 在網上查看后,我發現您通常只能將多個附件添加到 email 當從允許一次多次提交的表單輸入接收附件時https://phppot.com/php/send-email-with-多個附件-使用-php/ 這些文件作為一個數組存儲在一起,並通過遍歷數組來附加。 對我來說重要的是不要從一個表單輸入中檢索多個文件,所以我不喜歡這個選項。 我認為如果我自己將文件信息存儲在 arrays 中可能會有所幫助,但這也不起作用。

$fileNameArray = array($file1Name, $file2Name, $file3Name);
$filePathArray = array($file1Path, $file2Path, file3Path);
// . . .
for($i = 0; $i < 3; $i++) {
$mail->addAttachment($fileDataArray[$i], $fileNameArray[$i]);
}
$mail->Send();

接下來,我嘗試了一個解決方案,我嘗試發送多封電子郵件,每封都回復前一封電子郵件,其中包含一個附件。 這也沒有奏效。 在第一個 email 之后,沒有包含其他附件。

$fileNameArray = array($file1Name, $file2Name, $file3Name);
$filePathArray = array($file1Path, $file2Path, file3Path);
for($i = 0; $i < 3; $i++) {
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->Host = 'smtp.gmail.com'; 
$mail->Port = '587';        
$mail->SMTPAuth = true;       
$mail->Username = 'email@gmail.com';     
$mail->Password = 'password';     
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;     
//  . . .
$mail->Body = $mail_body;
 
$mail->addAttachment($filePathArray[$i], $fileNameArray[$i]);   

我還查看了一些涉及編輯 PHPMailer 代碼的修復程序。 這兩個修復都與內容 ID 有關。 我要么找不到修復引用的代碼,要么似乎在發布修復后,PHPMailer 已更新並實施了修復。

https://sourceforge.net/p/phpmailer/discussion/130418/thread/42bf5695/ https://developer-paradize.blogspot.com/2015/02/how-to-fix-multiple-attachments-problem.html

在這一點上,我有點迷失了。 如果有人知道如何使用 PHPMailer 向 email 添加多個附件,您能幫幫我嗎? 非常感謝您的幫助。 謝謝你。

這個問題由另一個線程上的同步回答。 https://github.com/PHPMailer/PHPMailer/issues/2098

“你指的那根線是有年頭的!

關於唯一 ID 的文章早已過時; 具有重復 cid 值的內聯附件仍將被忽略,但這是預期的行為,並且僅適用於使用 addEmbeddedImage() 和 addStringEmbeddedImage() 創建的內聯附件。

這里的關鍵問題是您沒有正確處理上傳。 PHP 文檔中介紹了您應該如何處理上傳,以及在 PHPMailer 參與之前發生的所有事情。

首先,您需要了解文件輸入的工作原理。 這些決定了 PHP 為您填充的 $_FILES 超全局中顯示的內容。 您可以有多個文件類型輸入,即 select 每個文件,或者您可以有一個允許您輸入 select 多個文件的單個文件。 PHPMailer 不關心任何一種方式,但你必須這樣做。

接下來,您需要確保使用 move_uploaded_file 或至少 is_uploaded_file 以驗證 $_FILES 超全局中的內容,否則不安全。

第三,您需要檢查對 addAttachment() 的調用是否成功 - 目前,您只是假設它們可以正常工作並且根本沒有錯誤檢查。

所以,我建議你看一下單文件和多文件上傳的例子,它們都做到了以上所有,並且添加多個附件沒有已知的問題。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM