Kleines Problem mit dem MegaMail-Mod/Force Email Update

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Kleines Problem mit dem MegaMail-Mod/Force Email Update

Beitrag von Holger »

Ich habe MegaMail installiert um das lästige Timouten beim Mass-Email zu umgehen.
Hat auch wunderbar funktionert.
Danach habe ich Force Email Update 1.0.3 installiert und bekomme jetzt am Ende des MegaMail-Versandes die Fehlermeldung:
Sorry, but no such user exists.
^w
Woran kann das liegen?
Ich habe rund 620 Mitglieder und habe die Einstellung 20 Mails/10 Sek verwendet.

Die Anweisung

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
#

admin/admin_mass_email.php

# 
#-----[ FIND ]------------------------------------------ 
# 

$sql = ( $group_id != -1 ) ? "SELECT u.user_email FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> " . TRUE . " AND u.user_id = ug.user_id" : "SELECT user_email FROM " . USERS_TABLE;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not select group members', '', __LINE__, __FILE__, $sql);
	}

# 
#-----[ REPLACE WITH ]------------------------------------------ 
#

	$sql = ( $group_id != -1 ) ? "SELECT u.user_email FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> " . TRUE . " AND u.user_id = ug.user_id AND u.email_validation='0' " : "SELECT user_email FROM " . USERS_TABLE . " WHERE email_validation='0' ";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not select group members', '', __LINE__, __FILE__, $sql);
	}
habe ich natürlich auch in admin_megamail.php umgesetzt:

Code: Alles auswählen

	// OK, now let's start sending

	$error = FALSE;
	$error_msg = '';

	$sql = ( $group_id != -1 ) ? "SELECT u.user_email FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> " . TRUE . " AND u.user_id = ug.user_id AND u.email_validation='0' " : "SELECT user_email FROM " . USERS_TABLE . " WHERE email_validation='0' ";
	$sql .= " LIMIT ".$mail_data['batch_start'].", ".$mail_data['batch_size'];
	
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not select group members', '', __LINE__, __FILE__, $sql);
	}
Hätte ich das hier auch machen müssen?

Code: Alles auswählen

	//Now, let's see if we reached the upperlimit, if yes adjust the batch_size
	$sql = ( $group_id != -1 ) ? "SELECT COUNT(u.user_email) FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> " . TRUE . " AND u.user_id = ug.user_id" : "SELECT COUNT(u.user_email) FROM " . USERS_TABLE. " u";

	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not select group members', '', __LINE__, __FILE__, $sql);
	}
/Holger
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Zum prüfen wären Links zu den MODs geschickt, denn ich kenne weder den einen, noch den anderen :(
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Okay, ich schau nachher mal drüber, wenn ich etwas Luft habe...

EDIT
Dauert noch ein Weilchen. Ich habe momentan einiges um die Ohren...
Zuletzt geändert von oxpus am Mo 27.Mär, 2006 00:53, insgesamt 1-mal geändert.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Danke!
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Soweit habe ich mal die beiden MODs angeschaut und ich habe da zunächst eine Frage:
Welche Eigenschaften hat das Feld "email_validation" in der Usertabelle?
Richtig: INT(2), also eine Zahl.
Warum wird der darin enthaltene Wert als String abgefragt?
Blödsinn, die korrekte SQL-Anweisung diesbezüglich müsste also lauten:

Code: Alles auswählen

$sql = ( $group_id != -1 ) ? "SELECT u.user_email FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> " . TRUE . " AND u.user_id = ug.user_id AND u.email_validation = 0" : "SELECT user_email FROM " . USERS_TABLE . " WHERE email_validation = 0";
Und damit auch diese Abfrage wirklich klappt, füge mal nach dieser Anweisung ein

Code: Alles auswählen

echo $sql;exit;
ein, führe dann das Script aus und es wird mit der Anzeige dieser SQL-Anweisung anhalten.
Kopiere dann diese Anweisung und führe sie mit phpmyadmin aus.
Wenn dann ein Ergebnis ohne Fehlermeldung zurückkommt, liegt es am Script, also der weiteren Verarbeitung dieser Daten, ansonsten ist die Anweisung selber falsch.
Poste mal das Ergebnis, dann sehen wir weiter...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Danke erstmal!

Wenn ich

Code: Alles auswählen

echo $sql;exit;
einfüge, bleibt er dann schon nach dem ersten Senden stehen?
Der Fehler tritt ja am Ende des Vesandes auf.

Die Frage ist ja auch:
Hätte ich das Replacement hier auch machen müssen?

Code: Alles auswählen

   //Now, let's see if we reached the upperlimit, if yes adjust the batch_size 
   $sql = ( $group_id != -1 ) ? "SELECT COUNT(u.user_email) FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> " . TRUE . " AND u.user_id = ug.user_id" : "SELECT COUNT(u.user_email) FROM " . USERS_TABLE. " u"; 


   if ( !($result = $db->sql_query($sql)) ) 
   { 
      message_die(GENERAL_ERROR, 'Could not select group members', '', __LINE__, __FILE__, $sql); 
   }
EDIT:
Beim Ausführen der Mass-Email mit

Code: Alles auswählen

echo $sql;exit;
bekomme ich angezeigt:
SELECT user_email FROM phpbb_users WHERE email_validation = 0
Dies in phpmyadmin ausgeführt gibt mir 637 Treffer zurück. 679 sind es total in der DB.

EDIT2:
Der im ersten Post gemeldete Fehler tritt immernoch auf.

Gruss
Holger
Zuletzt geändert von Holger am Mo 03.Apr, 2006 10:41, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Hm, ersetzt mal in der admin_megamail.php den Block

Code: Alles auswählen

	if ( $row = $db->sql_fetchrow($result) )
	{
		$bcc_list = '';
		do
		{
			$bcc_list .= ( ( $bcc_list != '' ) ? ', ' : '' ) . $row['user_email'];
		}
		while ( $row = $db->sql_fetchrow($result) );
		$db->sql_freeresult($result);
	}
	else
	{
		$message = ( $group_id != -1 ) ? $lang['Group_not_exist'] : $lang['No_such_user'];

		$error = true;
		$error_msg .= ( !empty($error_msg) ) ? '<br />' . $message : $message;
	}
durch

Code: Alles auswählen

	$total_user = $db->sql_numrows($result);
	if ($total_user)
	{
		$bcc_list = '';
		do
		{
			$bcc_list .= ( ( $bcc_list != '' ) ? ', ' : '' ) . $row['user_email'];
		}
		while ( $row = $db->sql_fetchrow($result) );
		$db->sql_freeresult($result);
	}
	else
	{
		$message = ( $group_id != -1 ) ? $lang['Group_not_exist'] : $lang['No_such_user'];

		$error = true;
		$error_msg .= ( !empty($error_msg) ) ? '<br />' . $message : $message;
	}
Vielleicht hilfts...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten