Joomla.it Forum
Joomla! 1.5.x (versione con supporto terminato) => Joomla! 1.5 => : Xabaras78 10 Jun 2007, 15:09:16
-
Ciao a tutti,
come e' noto, provando ad usare la funzione MassMail di joomla su altervista, molte delle mail non arrivano a destinazione, perche' c'e' un limite di invio di 2 mail ogni 3 secondi imposto dal server... Suggeriscono quindi di impostare un timer (tale sleep(3)) all'interno del ciclo while che gestisce la mail... Il problema e'... dove si trova questo ciclo? all'interno di quale file? Se qualcuno sa darmi qualche dritta...
grazie e ciao
:)
-
si trova /administrator/components/com_massmail/admin.massmail.php
questa è la funzione
function sendMail() {
global $database, $my, $acl;
global $mosConfig_sitename;
global $mosConfig_mailfrom, $mosConfig_fromname;
$mode = intval( mosGetParam( $_POST, 'mm_mode', 0 ) );
$subject = strval( mosGetParam( $_POST, 'mm_subject', '' ) );
$gou = mosGetParam( $_POST, 'mm_group', NULL );
$recurse = strval( mosGetParam( $_POST, 'mm_recurse', 'NO_RECURSE' ) );
// pulls message inoformation either in text or html format
if ( $mode ) {
$message_body = $_POST['mm_message'];
} else {
// automatically removes html formatting
$message_body = strval( mosGetParam( $_POST, 'mm_message', '' ) );
}
$message_body = stripslashes( $message_body );
if (!$message_body || !$subject || $gou === null) {
mosRedirect( 'index2.php?option=com_massmail&mosmsg=Compilare la form correttamente' );
}
// get users in the group out of the acl
$to = $acl->get_group_objects( $gou, 'ARO', $recurse );
$rows = array();
if ( count( $to['users'] ) || $gou === '0' ) {
// Get sending email address
$query = "SELECT email"
. "\n FROM #__users"
. "\n WHERE id = " . (int) $my->id
;
$database->setQuery( $query );
$my->email = $database->loadResult();
mosArrayToInts( $to['users'] );
$user_ids = 'id=' . implode( ' OR id=', $to['users'] );
// Get all users email and group except for senders
$query = "SELECT email"
. "\n FROM #__users"
. "\n WHERE id != " . (int) $my->id
. ( $gou !== '0' ? " AND ( $user_ids )" : '' )
;
$database->setQuery( $query );
$rows = $database->loadObjectList();
// Build e-mail message format
$message_header = sprintf( _MASSMAIL_MESSAGE, html_entity_decode($mosConfig_sitename, ENT_QUOTES) );
$message = $message_header . $message_body;
$subject = html_entity_decode($mosConfig_sitename, ENT_QUOTES) . ' / '. stripslashes( $subject);
//Send email
foreach ($rows as $row) {
mosMail( $mosConfig_mailfrom, $mosConfig_fromname, $row->email, $subject, $message, $mode );
}
}
$msg = 'E-mail inviata a '. count( $rows ) .' utenti';
mosRedirect( 'index2.php?option=com_massmail', $msg );
}
?>
-
sì nel frattempo l'avevo trovato, grazie.... ho messo uno sleep(4) dopo il foreach verso la fine, proprio nella sezione //sendmail... Il problema e' che pare andare tutto bene, poi pero' durante l'invio delle mail, dal pannello di controllo di joomla, invece di dire "inviate mail a tot utenti", dopo aver macinato un po', lo schermo diventa bianco, firefox riporta la dicitura "completato" e nulla piu' si muove... e facendo un controllo la mail e' stata inviata correttamente solo alle prime 10-15 persone...
-
l'idea dello sleep va bene, ma devi aggiungerci un contatore
ricordati che su av il tempo dell'esecuzione dello script è 15 secondi quindi non arriveresti neanche a 10 iscritti
-
Ah questa dei 15 secondi mi mancava...
grazie ancora
-
Ah questa dei 15 secondi mi mancava...
grazie ancora
ti ho scritto in pm una possibile modifica testala poi se va bene la si posta qui ;)
o in caso correggila 8)
-
Letto e risposto, grazie ;)