此代码通过邮件表向所有员工发送电子邮件,其中列号为Id,Name,Email。现在举个例子, 如果有3名员工,则第一名员工将所有3个工资单作为附件获得,2名员工获得第2和第3个工资单,第3名员工仅获得第3个工资单。我认为存储的电子邮件值正在创建问题,所以我想清除存储在$ sendto,$ pdf和$ filename变量中的数据。我试过apc_delete(),unset(),还有$ var =""但没有一个工作。
这是代码:
<?php
//require 'mailerClass/PHPMailerAutoload.php';
require_once '../connect.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load composer's autoloader
require 'vendor/autoload.php';
$mail = new PHPMailer;
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
$cin =1;
$sql = "SELECT * FROM mail";
$query = mysqli_query($con, $sql);
$count = mysqli_num_rows($query);
try {
while($row = mysqli_fetch_array($query, MYSQL_ASSOC)){
//
$sendto = $row['Email'];
//attachment pdf files path array
$path = "C:/Reports/";
$file = $row['Name'];
$extension = ".pdf";
$filename = $file.$extension;
$pdf = $path. $file. $extension ;
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
//$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.mail.yahoo.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'username@yahoo.com'; // SMTP username
$mail->Password = '@password'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; //587; // TCP port to connect to
//Recipients
$mail->setFrom('mediakraft64@yahoo.com');
$mail->addAddress($sendto); // Add a recipient
$mail->addReplyTo('mediakraft64@yahoo.com');
$mail->addCC('mediakraft64@yahoo.com');
//$mail->addBCC('bcc@example.com');
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Payslip';
$mail->Body = 'Payslip from Mediakraft Check file attachment';
$mail->AltBody = 'Payslip from Mediakraft Check file attachment';
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->addAttachment($pdf, $filename); //= $_POST['mypdf'];
$mail->send();
echo 'Message has been sent';
//unset($sendto);
$sendto = " ";
$pdf = " ";
$mail->clearAttachments();
sleep(5);
} //end while
echo"<script>alert('Email Sent... Successfully'); document.close();</script>";
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
?>
任何帮助??
由于
答案 0 :(得分:-1)
如果要重用该变量,只需为其重新分配一个新值:
$a = 1;
$a = "a string";
$a = new MyClass();
PHP的引擎会自动删除旧值(如果需要)。你不必担心。
答案 1 :(得分:-1)
unset
将删除变量和内容。调用$a
后引用unset($a)
将引发错误。此外,您必须考虑要取消设置的变量的范围,以及是通过引用还是通过函数内部的副本传递它。
要仅删除内容,没有特定的内置PHP指令。如果您必须发出变量不再保留有效数据的信号,或者释放当前使用的内存,请为其分配null
或false
。
没有“清除变量”之类的东西。您可以使用empty()
查看 PHP是否认为变量为空。