Mainlist con errore
Autore: Marco RicchezzaSalve ho seguito le istruzioni che sono nelle vostre bellissime spiegazioni ed aiuti .
Ho creato la pagina maillist come protetta e un altra pagina inviamail.php come nelle spiegazioni riportate sotto.
poi quando vado a fare la prova vado nella pagina maillist mi chiede la l'email e la password la metto e accedo alla pagina poi inserisco oggetto e la descrizione e premo il tasto invio .
da quello che ce scritto nelle spiegazioni tutte le email caricate nel punto 1 impostazioni->Gestioni Accessi-> e dentro gli utenti ci sono tutte le login con le password e l'email.
io ricevo sempre l'errore : Fatal error: Call to a member function fetch_assoc() on boolean in /web/htdocs/www.unicondominio.eu/home/inviamail.php on line 55
Instruzioni seguite nel post : https://helpcenter.websitex5.com/it/post/169375
Io utilizzo questo codice che funziona solo per gli utenti registrati in modo automatico, cioè presenti sul database.
Nella pagina modulo per l'invio mail (che deve essere sotto login) in un oggetto codice html inserisci questo codice:
<table><td><td center><b>Mailing list</b><tr>
</tr><tr><td> </tr>
</tr><form action="inviamail.php" method="POST" enctype="multipart/form-data">
<tr><td align=right>Oggetto: </td>
<td align=left><input type="text" size="30" name="oggetto" value="" /></td>
</tr><td> <tr >
<tr><td><br><td><tr>
<td align=right>Messaggio: </td>
<td align=left><textarea cols="40" rows="10" name="messaggio"></textarea></td>
<tr><td> <td align=left ><input type="submit" value="Invia" /> <input type="reset" value="Reset">
</tr></table></form>
in unaltra pagina che chiamerai inviamail.php (quindi deve essere php controlla nella propietà pagina l'estensione e il nome del file generat!) inserisci quest'altro codice:
<?php
require_once("res/x5engine.php");
require_once("res/access.inc.php");
$pa = Configuration::getPrivateArea();
$user = $pa->whoIsLogged();
$realname=$user['realname'];
$qchiave = array_keys($imSettings['databases']);
$qdati = getDbData($qchiave[0]);
$host = $qdati['host'];
$db_user = $qdati['user'];
$db_psw = $qdati['password'];
$db_name = $qdati['database'];
$qfolder = $imSettings['general']['public_folder'];
$tabella = $imSettings['access']['dbtable'];
$db = new mysqli ($host, $db_user, $db_psw, $db_name);
$db ->autocommit(FALSE);
if ($db->connect_error) { die("Connessione fallita: " . $db->connect_error); }
$sql = "SELECT * FROM $tabella WHERE realname ='$realname'";
$result = $db->query($sql);
$row=$result->fetch_assoc();
$mittente = $row['email'];
$sql = "SELECT * FROM $tabella";
$result = $db->query($sql);
if (!$result) {die("Errore nella query $query: " . $db->connect_error);}
$oggetto = $_POST['oggetto'];
$messaggio = $_POST['messaggio'];
$mail_headers = "From: " . $realname . " <" . $mittente . ">\r\n";
$mail_headers .= "Reply-To: " . $mittente . "\r\n";
$mail_headers .= "X-Mailer: PHP/" . phpversion();
$mail_headers .= "MIME-Version: 1.0\n";
$mail_headers .= "Content-type: text/html; charset=UTF-8\n";
while ($row = $result->fetch_assoc() )
{ $nome =$row['realname'];
$destinatario = htmlentities($row['email']);
// COSTRUIAMO IL CORPO DELLA MAIL
$mail_body = $messaggio . "<BR><BR>" . "\r\n";
if(mail($destinatario, $oggetto, stripslashes($mail_body), $mail_headers ))
{
echo "<p>Mail inviata a ". $nome."</p>";
}else{
echo "<p>Errore!</p>";
} }
?>
Questo script è stato creato e funziona con la versione 13 e non è testato per la 19 e funziona solo per gli utenti registrati in modo automatico, cioè presenti sul database.
Dall'errore postato sembra che il database non sia popolato
Ciao
Buongiorno Marco,
mi spiace ma su codice esterno e modifiche ai file purtroppo non posso aiutarti perchè va al di la dell'assistenza su WebSIte X5. Dovrai attendere aiuti da parte di altri utenti della community.
Autore
grazie mille siete sempre fortissimi :-)
@Marco ...
se hai risolto chiudi il post con corretto , cioè cliccando sulla spunta verde sotto la risposta che ti ha risolto...
grazie.