WebSite X5Help Center

 
Gesuino A.
Gesuino A.
User

Modulo Mail  it

Auteur : Gesuino A.
Visité 2949, Followers 4, Partagé 0  

Ciao a tutti,

   vorrei utilizzare il modulo mail per permettere ad un'utente di inviare un messaggio a tutti gli iscritti vorrei poter creare una stuttura simile in una nuova pagina

Nome = "Utente che ha fatto logon"

Oggetto = "Testo libero"

Messaggio = "Testo Libero"

Cliccando poi sul bottone "Invia" vado a spedire questa mail a tutti gli utenti censiti...

Posso farlo utilizzando il modulo Mail a disposizione nell'applicativo?

Grazi mille

Posté le
13 RéPONSES - 1 UTILES
Tommaso Tarallo
Tommaso Tarallo
User

nel modulo invio email puoi inserire come destinatari delle email tutti gli indirizzi email che gli svrivi tu e non in automatico

Lire plus
Posté le de Tommaso Tarallo
Giorgio C.
Giorgio C.
User

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>&nbsp;</tr>
</tr><form action="inviamail.php" method="POST" enctype="multipart/form-data">
<tr><td align=right>Oggetto:&nbsp;</td>
<td align=left><input type="text" size="30" name="oggetto" value="" /></td>
</tr><td>&nbsp;<tr >
<tr><td><br><td><tr>
<td align=right>Messaggio:&nbsp;</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>";
} }
?>

Un po' spartana ma funziona.

Lire plus
Posté le de Giorgio C.
Tommaso Tarallo
Tommaso Tarallo
User

Ciao Giorgio, complimenti per gli script, ma non mi è chiaro alcuen cose:

- il form in codice html lo metti in una pagina protetta che la possono vedere solo chi è registrato?

Da quello che ho capito, un utente si registra automaticamente e tramite il form invia una email a tutti?

Oppure il form è accessibile a tutti?

- in quale contesti pratici si può usare?

Grazie!

Lire plus
Posté le de Tommaso Tarallo
Giorgio C.
Giorgio C.
User

Grazie per l'apprezzamento, spero di non aver fatto errori nell'adattarlo.

Si la pagina deve essere protetta per due motivi:

  • Il primo é perché lo script ricava il mittente dal login
  • Il secondo é per evitare che chiunque possa mandare mail ai propri iscritti.

Ciao 

Lire plus
Posté le de Giorgio C.
Tommaso Tarallo
Tommaso Tarallo
User

Ok Giorgio, ma usando i forum e i mailing list di Google, ForumFree, Facebook,... 

non trovo la necessità pratica di questa funzione..

Lire plus
Posté le de Tommaso Tarallo
Giorgio C.
Giorgio C.
User

Vedi tu. Io ho risposto a Gesuino A.

Lire plus
Posté le de Giorgio C.
Tommaso Tarallo
Tommaso Tarallo
User

era un modo per scambiarci le idee, tutto qua.

Lire plus
Posté le de Tommaso Tarallo
Giorgio C.
Giorgio C.
User

Questo modulo io lo avevo pensato per fare una mailing list a tutti i soci del mio gruppo e/o per mandare avvisi agli iscritti.

Siccome i dati sono nel database del sito è più logico e funzionale usare quelli e non doverli copiare altrove.

Infatti prima usavo sendblaster che a livello di mail è più efficente ma devo gestire due liste e tenerle aggiornate.

Così invece ho già tutto aggiornato. Volendo con poche modifiche si possono mandare anche immagini... ma lo script diventerebbe più complesso.

Lire plus
Posté le de Giorgio C.
Gesuino A.
Gesuino A.
User
Auteur

Ciao a tutti e grazie mille per il suggerimento.

Inserendo il codice ho modificato i nome per il collegamento al mio db ma quando lo eseguo ho il seguente errore:

"Fatal error: Call to a member function fetch_assoc() on boolean in /membri/nomesito/inviamail.php"

cosa ho dimenticato?

grazie mille

Lire plus
Posté le de Gesuino A.
Giorgio C.
Giorgio C.
User

Non devi modificare nulla. Se hai impostato la registrazione automatica i dati del dj vengono recuperati dallo script

Lire plus
Posté le de Giorgio C.
Gesuino A.
Gesuino A.
User
Auteur

Ciao a tutti,

   scusatemi ho risolto il mio problema...è stato sufficiente riportare il tutto alla fase iniziale senza modifiche al codice che l'errore non mi è più comparso.

grazie ancora a tutti per l'aiuto.

Lire plus
Posté le de Gesuino A.
Giorgio C.
Giorgio C.
User

Come dicevo lo script è.molto spartano e non ha funzioni di recupero di errori quindi necessità che il db  sia popolato, che ci sia cioè qual uno già registrato.

Anche la mail è spartana. Se qualcuno volesse si potrebbe perfezionare per creare una modulo per inviare mailinglist 

Lire plus
Posté le de Giorgio C.
Giorgio C.
Giorgio C.
User

e c'è anche una leggerezza... nel senso che da per scontato che non ci siano registrazioni con lo stesso nome reale...

Lire plus
Posté le de Giorgio C.