【发布时间】:2021-11-29 22:43:16
【问题描述】:
我有一个从用户输入生成 PDF 的表单,以及一个文件上传选项。
所以用户可以上传或不上传文件,我使用AddAttachment作为这部分,AddStringAttachment作为生成的PDF。
这是我的代码:
//PDF
$pdf = $dompdf->output();
//Configuration
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = 'localhost';
$mail->SMTPAuth = false;
//Email details
$mail->From = 'email@email.com';
$mail->FromName = 'My email';
$mail->Subject = 'You have a new email';
$mail->Body = 'Hi there, You have a new message.<br>';
$mail->AltBody = 'Hi there, You have a new message.';
//Loop through recipients
$recipients = ['email1@email.com', 'email2@email.com'];
foreach ($recipients as $recipient) {
$mail->addAddress($recipient);
$mail->AddStringAttachment($pdf, 'name.pdf');
if (!empty($_FILES['upload']['tmp_path'])) {
$mail->AddAttachment($_FILES['upload']['tmp_path'], 'upload.pdf');
}
if ( !$mail->Send() ) {
echo 'Not sent';
} else {
echo 'Sent';
}
// Clear all addresses and attachments for next loop
$mail->clearAddresses();
$mail->clearAttachments();
}
问题是,当我上传文件时,我收到 2 封电子邮件: 1-带有附件和生成的PDF(这是预期的) 2-仅使用生成的pdf。但是内容乱七八糟,看起来不对。
当我不上传文件时,我只会收到一封电子邮件。
我尝试只发送到 1 封电子邮件,但结果相同。
【问题讨论】:
-
你为什么要在循环中添加附件?
-
@miken32 因为附件会在每个循环结束时被清除。我不确定这部分是如何工作的
$mail->clearAddresses(); $mail->clearAttachments(); -
但您只是一遍又一遍地添加相同的附件。
-
我不知道。谢谢
-
您的问题缺少太多信息,无法确定,但您似乎有多个问题。我不知道我之前是否错过了这个或者您更新了问题,但是为什么您有 addStringAttachment 和 addAttachment。您还有至少 6 个我们不知道的变量,它们可能包含或不包含什么($recipients、$pdf、$filename、$path、$report、$attach)