ich habe eine mögliche problemquelle gefunden. die versendende stelle im board lautet folgendermaßen:
Code: Alles auswählen
$result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
// mail('nico.haase@gmx.de', 'phpBB-DEBUG: ' . $this->subject, $this->extra_headers);
// mail('forum@buchtips.net', 'phpBB-DEBUG: ' . $this->subject, $this->extra_headers);
if (!$result && !$board_config['sendmail_fix'] && $empty_to_header)
{
$to = ' ';
$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '1'
WHERE config_name = 'sendmail_fix'";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Unable to update config table', '', __LINE__, __FILE__, $sql);
}
$board_config['sendmail_fix'] = 1;
$result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
}
die mail kann also unter bestimmten umständen doppelt geschickt werden. schätzungsweise liegt das problem darin, dass das to-feld durch die funktion $klasse->to() leer bleibt, durch $klasse->bcc() gefüllt wird, dann wird die mail erstmal regulär gesendet, aus irgendeinem grund aber trotzdem ein false für $result übermittelt. die bedingungen für eine erneute sendung treffen zu, weil $result
trotz gesendeter mail false trägt, $to leer ist (siehe $empty_to_header) und sendmail_fix deaktivert ist (ist das die smtp-bedingung??). demnach kann der fehler nur auftreten, wenn mehr als zwei leute ein thema abonniert haben...
lösung wäre: die benachrichtigung wird nicht mehr per bcc in einem schlag verschickt, sondern direkt per to-feld einzeln.