WebSite X5Help Center

 
Gesuino A.
Gesuino A.
User

Modulo Mail  it

Autor: Gesuino A.
Besucht 3000, Followers 4, Geteilt 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

Gepostet am
13 ANTWORTEN - 1 NüTZLICH
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

Mehr lesen
Gepostet am von 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.

Mehr lesen
Gepostet am von 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!

Mehr lesen
Gepostet am von 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 

Mehr lesen
Gepostet am von 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..

Mehr lesen
Gepostet am von Tommaso Tarallo
Giorgio C.
Giorgio C.
User

Vedi tu. Io ho risposto a Gesuino A.

Mehr lesen
Gepostet am von Giorgio C.
Tommaso Tarallo
Tommaso Tarallo
User

era un modo per scambiarci le idee, tutto qua.

Mehr lesen
Gepostet am von 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.

Mehr lesen
Gepostet am von Giorgio C.
Gesuino A.
Gesuino A.
User
Autor

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

Mehr lesen
Gepostet am von 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

Mehr lesen
Gepostet am von Giorgio C.
Gesuino A.
Gesuino A.
User
Autor

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.

Mehr lesen
Gepostet am von 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 

Mehr lesen
Gepostet am von 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...

Mehr lesen
Gepostet am von Giorgio C.