- Home
- Categorie
- Coding e Sistemistica
- PHP
- script registrazione email+invio email
-
infatti non penso sia difficile ... ma non sto trovando nulla perchè non saprei cosa cercare
non è una newsletter....
-
Nella pagina html avrai qualcosa di questo tipo:
[html]
<FORM action="gestoremail.php" method="POST">
Nome: <INPUT TYPE="text" NAME="nome">
E-mail: <INPUT TYPE="text" NAME="email" SIZE="18">
<INPUT NAME="submit" TYPE="submit" VALUE="Submit">
</FORM>
[/html]Mentre nel file gestoremail.php avrai un codice tipo questo, anche se chiaramente + elaborato (inoltre sarebbe meglio che tenessi tutto il codice in una sola pagina...ma facciamo secondo lo stile di madri come da te richiesto).
gestoremail.php
[php]
<?phpif ( $_POST['submit'] != "Submit")
{
echo "Impossibile completare l'operazione!";
}else
{
//recupera i dati passati con il post
$mail_iscritto = strip_tags($_POST['email']);
$nome_iscritto = strip_tags($_POST['nome']);//qui sotto devi mettere il percorso assoluto per arrivare
//al file dove verranno salvati i dati
$fd = fopen ("/www/tuosito.it/htdocs/listamail.txt", "a");
$contenuto = $nome_iscritto . " - " . $mail_iscritto . "\r\n";
fwrite($fd, $contenuto);
fclose($fd);//qui sotto devi inserire il tuo indirizzo di posta sul quale vuoi
//ricevere le mail, il contenuto del messaggio da inviare e l'oggetto
$tua_mail = "[email protected]";
$oggetto="oggetto della mail";
$messaggio = "Grazie per esserti iscritto BLA BLA BLA";$a= $mail_iscritto . ";" . $tua_mail;
$intestazioni= "From: TUONOME [email protected] \r \n";
$intestazioni .= "Reply-To: TUONOME [email protected] \r \n";
$intestazioni .= "X-Mailer: PHP/" . phpversion();
mail($a, $oggetto, $messaggio, $intestazioni);echo "Tutto è andato a buon fine!";
}
[/php]
Non riesco a cambiare il colore nel codice php per farti capire le parti che devi personalizzare...ad ogni modo credo che si capisca dove devi cambiare i dati fittizi con quelli reali.
Spero che, tanto per iniziare, possa andare bene...
-
ienavr ti ringrazio tantissimo per la tua risp.... cercando online ho trovato questo script che mi da la possibilità di far iscrivere gli utenti alla newsletter e di personalizzare i messaggi ... i dati vengono registrati su file .dat (necessario visto ke lo spazio non ha db) e poi si possono anche inviare i messaggi agli scritti.. il file principale (unico) è MailList.php dove vi è tutto il codice:
-
ienavr ti ringrazio tantissimo per la tua risp.... cercando online ho trovato questo script che mi da la possibilità di far iscrivere gli utenti alla newsletter e di personalizzare i messaggi ... i dati vengono registrati su file .dat (necessario visto ke lo spazio non ha db) e poi si possono anche inviare i messaggi agli scritti.. il file principale (unico) è MailList.php dove vi è tutto il codice:
-
figurati! se puoi metti un link al file che hai trovato di modo che chiunque ne abbia bisogno ne possa fruire... (in questo modo semplificheresti anche la vita a tutti coloro che hanno una necessità simile alla tua)
ciao
-
finalmente il forum è ok ... prima ho mandato il msg ma non ho avuto la possibilità di proseguire... ti dicevo che ho trovato uno script davvero ben fatto il file principale è maillist.php ........ il codice lo trovi nel file allegato ... vorrei aggiungere il modulo per inserire il nome e poi nell'email che manda di benvenuto .. mettere ciao <nome>
l'email di benventuo penso ke sia la porzione di codice:function send_welcome($email) {
// Send confirmation letter to new subscriber.
global $welcome_msg, $welcome_subject, $list_name, $owner_email, $sig, $version;
$welcome_subject = replace_shortcuts($welcome_subject, $email);
$headers = "From: "$list_name" <$owner_email>\nReply-To: $owner_email\nX-Mailer: PHPMailList V$version http://php.warpedweb.net/";
$welcome_msg .= "\n\n$sig";
$welcome_msg = replace_shortcuts($welcome_msg, $email);
mail($email, $welcome_subject, $welcome_msg, $headers);
}protesti dargli un okkio
se vuoi tutti i file li puoi scaricare da qui:
-
non ho al momento il tempo di guardare tutto il codice...però il soggetto del messaggio è salvato nella variabile $welcome_subject
ti basterebbe sostituire quindi questa riga:
$welcome_subject = replace_shortcuts($welcome_subject, $email);
con questa:
$welcome_subject = "Ciao" . $nome_iscritto;dove la variabile $nome_iscritto viene passata tramite un POST dal form allo script php
**
**
-
ok allora andiamo passo passo...
il codice del form è questo:<form method="post">
Tuo nome:<input type="text" name="nome" value="" size="20">
Tua e-mail:<input type="text" name="email" value="Tua e-mail" size="20">
<input type="radio" name="action" value="sub" checked><font size="-1"> Subscribe</font>
<input type="radio" name="action" value="unsub"><font size="-1"> Unsubscribe</font>
<input type="submit" value="submit"></form>come vedi ho aggiunto il campo nome che passa tramite post...
ora il msg di benvenuto viene elaborato sempre nella stessa pagina .. ed il codice in questione è questo:
function send_welcome($email) {
// Send confirmation letter to new subscriber.
global $welcome_msg, $welcome_subject, $list_name, $owner_email, $sig, $version;
$welcome_subject = replace_shortcuts($welcome_subject, $email);
$headers = "From: "$list_name" <$owner_email>\nReply-To: $owner_email\n";
$welcome_msg .= "\n\n$sig";
$welcome_msg = replace_shortcuts($welcome_msg, $email);
mail($email, $welcome_subject, $welcome_msg, $headers);
}in quest codice si deve implementare la varibile $nome. il msg (NO IL SOGGETTO) che arriva alla persona deve essere:
Ciao <nome>,
grazie....... bla bla bla...
-
ci sono delle cose che non vanno:
anzitutto
<input type="submit" value="submit">
qui manca il name e quindi come può lo script riconoscere la variabile submit se non le dai un nome?Quindi devi mettere:
<input type="submit" name="submit" value="submit">Ancora più grave:
<form method="post">
in questo caso manca l'action. Con l'action indichi quale sarà la pagina php incaricata di ricevere le variabili passate dal form ed elaborarle.Se, come dici, la pagina è la stessa in cui è contenuto il form devi mettere:
<form method="post" action= $PHP_SELF>La variabile $nome la recuperi al di fuori della funzione send_welcome e si recupera scrivendo così: $nome = $_POST['nome'];
Infine sostitusici
$welcome_msg .= "\n\n$sig"; con
$welcome_msg = "Ciao " . $nome . ", grazie ....bla bla bla...";e cancella questa riga:
$welcome_msg = replace_shortcuts($welcome_msg, $email);Un modo più semplice di fare le cose, in alternativa, è di leggersi il file README ( = Leggimi ) contenuto nello zip che hai postato. E' molto chiaro e utile.
-
c'è qualcosa che nn mi convince....
allora proviamo (ne approfitto della tua gentilezza) a configurarlo insieme ... se vai quihttp://www.fgtendaggi.it/mail/maillist.php?action=admin
entri nel pannello di controllo ecco i dati:
user
passentrando nell'amministrazione vedi che ci sono varie possibilità:
. mandare un messaggio di benvenuto- mandare un email di conferma registrazione
- ed un messaggio quando l'utente si cancella
ci sono delle varibili:
%list_name% = The name of the list.
%email% = The email address the email is being sent it.
%confirm_url% = URL user must go to to confirm subscription.
%subscribe_url% = URL users go to to resubscribe.
%unsubscribe_url% = URL where user can unsubscribe.che possono essere inserite nel messaggio .....
ora io vorrei scrivere la variabile nome in questo modo ....grazie per il tuo aiuto
-
ho modificato una cosa nella configurazione
devi poi sostituire la funzione send_welcome($email) originale con questa:
function send_welcome($email) {
// Send confirmation letter to new subscriber.
global $welcome_msg, $welcome_subject, $list_name, $owner_email, $sig, $version, $nome;
$welcome_subject = replace_shortcuts($welcome_subject, $email);
$headers = "From: "$list_name" <$owner_email>\nReply-To: $owner_email\nX-Mailer: PHPMailList V$version http://php.warpedweb.net/";
$welcome_msg .= "\n\n$sig";
$welcome_msg = replace_shortcuts($welcome_msg, $email);
$welcome_msg = str_replace("{nome}", $nome, $welcome_msg);
mail($email, $welcome_subject, $welcome_msg, $headers);
}e dovrebbe andare. Fammi sapere
-
ok funziona perfettamente ....
un ultima cosa .... vorrei che nel file dat si registrasse anche il nome oltre all'email .. il codice in questione che apre e chiude il file è questo:function remove_from_list($email) {
// Removes the address from the file.
global $list_file;
$file = @file($list_file);
$success = false;
$fd = @fopen($list_file, "w") or die("<center><b>The list data file could not be opened for writing.</b></center>");
if ($file) {
foreach($file as $address) {
$address = trim($address);
if ($address != $email) fputs($fd, "$address\n");
else $success = true;
}
fclose($fd);
}
return $success;
}function add_to_list($email) {
// Adds the email address to the data file.
global $list_file;
$fd = @fopen($list_file, "a") or die("<center><b>The list data file could not be opened.</b><br>Check the path and permissions.</center>");
fputs($fd, strtolower($email)."\n");
fclose($fd);
return true;
}potresti darmi una mano (che spacciato che sono) anche con questa parte di codice ???
-
per quanto riguarda la scrittura del file ... forse ci sto riuscendo .. allora ecco il codice che ho aggiunto:
function add_to_list($email) {
// Adds the email address to the data file.
$nome = $_POST['nome'];
global $list_file;
$fd = @fopen($list_file, "a") or die("<center><b>The list data file could not be opened.</b><br>Check the path and permissions.</center>");
fputs($fd, strtolower($nome));
fputs($fd, strtolower($email)."\n");
fclose($fd);
return true;
}però cosi il nome e l'email viene attaccato non riesco a dare lo spazio tra le due variabili
-
fai così (in questo modo scriverà, ad esempio: nomeutente - [EMAIL="[email protected]"][email protected][/EMAIL]
function add_to_list($email) {
// Adds the email address to the data file.
$nome = $_POST['nome'];
global $list_file;
$fd = @fopen($list_file, "a") or die("<center><b>The list data file could not be opened.</b><br>Check the path and permissions.</center>");
fputs($fd, strtolower($nome). " - " . strtolower($email)."\n");
fclose($fd);
return true;
}
-
perfetto funziona .. ma c'è un piccolo problem ... quando provo a cancellare l'email tramite Unsubscribe selezionato ... l'email non viene cancellata , ovviamente la funzione :
function remove_from_list($email) {
// Removes the address from the file.
global $list_file;
$file = @file($list_file);
$success = false;
$fd = @fopen($list_file, "w") or die("<center><b>The list data file could not be opened for writing.</b></center>");
if ($file) {
foreach($file as $address) {
$address = trim($address);
if ($address != $email) fputs($fd, "$address\n");
else $success = true;
}
fclose($fd);
}
return $success;
}non riconosce:
nome utente - email
?????????????????????
-
Prova questa soluzione:
function remove_from_list($email) {
// Removes the address from the file.
global $list_file;
$file = @file($list_file);
$success = false;
$fd = @fopen($list_file, "w") or die("<center><b>The list data file could not be opened for writing.</b></center>");
if ($file) {
foreach($file as $address) {
$address2 = trim(substr(stristr($address, "-"),2));
if ($address2 != $email) fputs($fd, "$address\n");
else $success = true;
}
fclose($fd);
}
return $success;
}
-
Ok Tutto Perfetto ... Sei Ingamba... Ci Sentiamo ...
-
è sempre un piacere aiutare le persone riconoscenti!
-
ienavr ho un piccolo problema ... l'email e nomi posso essere registrati continuamente anche già presente nel file list.dat ... il codice in questione dovrebbe essere questo:
[php]
function subscribe($email, $nome, $send_confirm, $send_welcome) {
// Subscribes address to list.
global $list_name;
if (($email == ""))
{
print_subscribe_form();
}
else {
if (!banned($email)) {
if (!on_list($email)) {
if (valid_email($email)) {
if ($send_confirm == "on") {
send_confirm($email);
echo "<h4 align="center">"$nome" Grazie per la tua registrazione a "$list_name".</h4><center>Un e-mail è stata inviata a "$email" asking you to confirm your subscription.<br>Please follow those instructions to complete the process.</center>";
}
else {
if (add_to_list($email)) {
echo "<h4 align="center">"$nome" l'e-mail: "$email" è stata registrata corettamente in "$list_name".</h4>";
if ($send_welcome == "on") {
send_welcome($email);
echo "<br><center>Riceverai a breve un e-mail con le informazioni per scaricare gratuitamente i tuoi due regali, Grazie. <br><br><img src="logo copia ok.png" alt="logo Tendaggi" /><br><br>|<a href="http://www.fgtendaggi.it">Vai alla Home</a>| <a href="http://www.fgtendaggi.it/tende e tendaggi.html"> Visita il sito</a>|</center>";
}
}
}
}
else echo "<h4 align="center">L'indirizzo e-mail: "$email" non è valido.</h4>";
}
else echo "<h4 align="center">L'e-mail: "$email" risulta già nel nostro database.<br> Se vuoi scaricare nuovamente i due regali contattaci a [email protected]</h4> <br><br><img src="logo copia ok.png" alt="logo Tendaggi" /><br><br>|<a href="http://www.fgtendaggi.it">Vai alla Home</a>| <a href="http://www.fgtendaggi.it/tende e tendaggi.html"> Visita il sito</a>|</center>";
}
else echo "<h4 align="center">L'indirizzo e-mail: "$email" è sospeso da "$list_name".</h4>";
}
}
[/php]
ma cosa c'è che non và secondo te????????
-
ciao vincenzo e scusa se non ho risposto prima!
La funzione da cambiare non è subscribe, ma on_list.
Per la precisione devi sostituire questo pezzo di codice:
function on_list($email) {
// Returns true if email address is on list.
global $list_file;
$found = false;
$file = @file($list_file);
if ($file) {
foreach ($file as $address) {
if (trim($address) == trim($email)) {
$found = true;
}
}
}
return $found;
}con questo:
function on_list($email) {
// Returns true if email address is on list.
global $list_file;
$found = false;
$file = @file($list_file);
if ($file) {
foreach ($file as $address) {
if ( trim(substr(stristr($address, "-"),2)) == trim($email)) {
$found = true;
}
}
}
return $found;
}Spero che sia tutto corretto!
Ciao