Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    [php & email] perchè non le invia?!

    Ciao a tutti!

    Ho un grosso problema con uno script in php da me creato e non riesco a venirne fuori... Si tratta di una newsletter. In pratica ho un form dove l'utente inserisce la mail e può scegliere se iscriversi o cancellarsi tramite un input radio. Lo script funziona bene per quanto riguarda l'iscrizione e la cancellazione (si appoggia su un database mysql), ma poi, una volta avvenuta l'azione, io vorrei inviare una mail all'indirizzo segnalato per avvisare l'utente..e qui casca l'asino! Non funziona! Quelli dell'hosting mi dicono che è tutto ok, ma le mail non arrivano..

    codice:
    <?php
    include ("config.inc.php");
    
    $email = $_POST['email'];
    $action = $_POST['action'];
    
    $intestazioni = "MIME-Version: 1.0\n";
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\n";
    $intestazioni .= "From: MioSito <info@miosito.it>\n\n";
    
    $ogg1 = "Iscrizione alla Newsletter";
    $ogg2 = "Cancellazione dalla Newsletter";
    $body1 = "<html><body><h3>Iscrizione alla Newsletter di Localando avvenuta con successo. Grazie!!!</h3>
    
    Da oggi riceverei a questo indirizzo notizie, curiosità e molto altro!</p></body></html>";
    $body2 = "<html><body><h3>Cancellazione dalla Newsletter di Localando avvenuta con successo.</h3>
    
    Da oggi non avrai più nostre notizie! :-(</p></body></html>";
    
    
    $check = 0;
    
    if (!isset($email) OR ($email=="")) {
    	print "<p class=\"errore\">Non hai compilato i campi obbligatori!</p>
    ";
    	} elseif (!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $email)){
    		print "<p class=\"errore\">Non hai inserito una email valida!</p>
    ";
    	} else {
    	$email = stripslashes(trim($email));
            $email = strtolower($email);
    	$check = 1;
    	}
    
    
    $db = mysql_connect($db_host, $db_user, $db_password)
    or die("Connessione non riuscita: " . mysql_error());
    
    $select = mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    
    if ($check == 1) {
    
    	if ($action=="subc") {
    		$query = "SELECT email FROM newsletter WHERE email = '$email'";
    		$result = mysql_query($query, $db);
    		$rows = mysql_num_rows($result);
    			if($rows>0) {
    			print("<p class=\"errore\">La tua email è già nel database.</p>
    ");
    			} else {
    			$query = "INSERT INTO newsletter (email) VALUES ('$email')";
    				if (mysql_query($query, $db)) {
    				print("<p class=\"inrilievo\">La tua email è stata aggiunta alla lista.</p><p 	class=\"link\">Abbiamo inviato una email di conferma all'indirizzo da te inserito.</p>
    ");
    				mail($email, $ogg1, $body1, $intestazioni);
    				} else {
    print ("Si è verificato un errore di comunicazione con il database. Riprova più tardi. Grazie!");
    				}
    			}
    	}
    	elseif ($action=="unsubc") {
    			if ($rows===0) {
    			print ("<p class=\"errore\">La tua email non è in lista.</p>
    ");
    			} else {
    			$query = "DELETE FROM newsletter WHERE email = '$email'";
    				if (mysql_query($query, $db)) {
    				print("<p class=\"inrilievo\">Cancellazione avvenuta con successo.</p>
    ");
    				mail($email, $ogg2, $body2, $intestazioni);
    				} else {
    print ("Si è verificato un errore di comunicazione con il database. Riprova più tardi. Grazie!");
    			        }
    	                }
             }
    }
    
    ?>
    Spero che qualcuno possa aiutarmi, perchè è tutta ieri che lo testo e non ci capisco più niente!!! :berto:

  2. #2
    metti un cntrollo sull'invio della mail e stampa le variabili che invii per verificare che il contenuto sia congruente.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    un controllo tipo

    codice:
    print("<p class=\"inrilievo\">La tua email è stata aggiunta alla lista.</p><p 	class=\"link\">Abbiamo inviato una email di conferma all'indirizzo da te inserito.</p>
    ");
    				
    if (mail($email, $ogg1, $body1, $intestazioni)) {
    print ("Email:".$email."\nOggetto:".$ogg1."\nTesto:".$body1."\nIntestazioni:".$intestazioni."\n");
    } else {
    print ("Errore nell'invio della mail");
    }
    oppure come?

    grazie e scusa per il pvt!

  4. #4
    sono due cose diverse.

    if(!mail .... ) { invio fallito come controllo di invio, mentre nel tuo script prendi per scontato il buon esito ...

    la stampa e' per un tuo debug, se quello che contiene risponde alle cose attese allora saprai indirizzare altrove la ricerca dell'errore. Ma se non sai come e' interpretato cosa invii, non sai manco cosa e dove cercare il guaio.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Scommettiamo che così funziona?

    mail($email,$titolo,$soggetto,$headers,'-fMAIL@MAIL.COM');

    in pratica come ultimo parametro devi inserire "-f" e (attaccato) una mail REALE del dominio. In questo modo funge da verifica e se non arriva ti torna indietro a quella mail.

    Io risolvo sempre così, ne parlo anche qua: http://script-php-js-mysql.blogspot....-arrivano.html
    Guybrush Threepwood

  6. #6
    ora proverò a seguire il tuo suggerimento, guybrush :-)

    cmq ho effettuato la verifica come diceva Piero, ma non mi dà alcun errore. In particolare ho fatto diverse prove, inviando la mail ad un indirizzo di libero.it, una ad un altro dominio e una al mio stesso dominio.. risultato? su libero ne arriva 1 su 2, sugli altri domini arrivano tutte. come è possibile??

  7. #7
    Originariamente inviato da elysaweb
    ora proverò a seguire il tuo suggerimento, guybrush :-)

    cmq ho effettuato la verifica come diceva Piero, ma non mi dà alcun errore. In particolare ho fatto diverse prove, inviando la mail ad un indirizzo di libero.it, una ad un altro dominio e una al mio stesso dominio.. risultato? su libero ne arriva 1 su 2, sugli altri domini arrivano tutte. come è possibile??
    non sei il primo che si lamenta di questo fatto... magari sei finito in un filtro spam

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    oh allora è proprio un problema di libero... uff! e pensare che la mail è la mia!!! vabbè credo allora di poter stare tranquilla che lo script funziona...

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Be' se stai facendo una newsletter non è che puoi fregartene a cuor leggero se uno dei principali provider non la riceve.
    Il consiglio è di utilizzare phpmailer (cerca su google)

  10. #10
    ma perchè dovrei usare una classe se il mio script funziona?

    il problema, sto notando, è che non riesco ad inviare email a TUTTI i domini ospitati al di fuori del mio hosting (ovvero ai due domini che ho nello stesso hosting arrivano, agli altri a volte sì e a volte no)... l'amministratore del server continua a dirmi che è tutto a posto...

    io sto impazzendo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.