对于我的网页,我有一个php邮件服务,可让我通过发送邮件EmailService::getService()->sendEmail($email, $first_name, $subject, $body);除非我将此行放入循环中,例如,通知所有列出的管理员,否则此方法工作正常:$sql = "SELECT * FROM admin_notifications";$result = mysqli_query($con, $sql);while($row = mysqli_fetch_assoc($result)){ EmailService::getService()->sendEmail($row['email'], $row['first_name'], $subject, $body);}现在,每个管理员都会收到每封邮件。例如,如果有3个管理员,则每个管理员都会收到3个不同的邮件。该服务似乎分别向每个接收者发送3封邮件。由于我没有实现邮寄服务本身,并且因为我不完全了解它,所以我真的不知道从哪里开始寻找此错误。也许有人在这里有建议吗?这是邮件服务的代码:<?php /*Verschickt Emails*/ use TijsVerkoyen\CssToInlineStyles\CssToInlineStyles; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; class EmailService{ /** * instance * * Statische Variable, um die aktuelle (einzige!) Instanz dieser Klasse zu halten * * @var Singleton */ protected static $_instance = null; protected $mail; /** * get service * * Falls die einzige Service-Instanz noch nicht existiert, erstelle sie * Gebe die einzige Service-Instanz dann zurück * * @return Singleton */ public static function getService() { if (null === self::$_instance) { self::$_instance = new self; } return self::$_instance; } /** * clone * * Kopieren der Service-Instanz von aussen ebenfalls verbieten */ protected function __clone() {} /** * constructor * * externe Instanzierung verbieten */ protected function __construct() { //new PHPMailerAutoload(); $this->mail = new PHPMailer();
2 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
您每次在循环中都使用相同的实例,每次调用sendEmail()它都会为实例添加地址。
您可以每次创建一个新实例,而不是调用getService(),它将重新启动。
while($row = mysqli_fetch_assoc($result)){
$mailer = new EmailService;
$mailer->sendEmail($row['email'], $row['first_name'], $subject, $body);
}
- 2 回答
- 0 关注
- 149 浏览
添加回答
举报
0/150
提交
取消