Visualizzazione risultati 1 fino 6 di 6

Discussione: Problema Invio Mail! (non vorrei essere ripetitivo)

  1. #1
    Guest

    Exclamation Problema Invio Mail! (non vorrei essere ripetitivo)

    Ciao a tutti.
    Come già qualche altro utente,ho riscontrato un problema con un form di invio mail php che risiede sul mio sito.
    In pratica da questo form,pare che l'invio della mail parta senza alcun problema ma poi a nessun utente, che fa parte del gruppo di chi deve riceverle arriva..Anzi,solo a me sono arrivate le varie mail partite da quel form,ma al resto degli utenti no.
    Il link al form è http://nzallanutos2008.altervista.org/invform.php che al momento è disabilitato essendoci un controllo orario che ne permette il blocco e lo sblocco.
    Il codice associato all'invio delle mail è questo:
    Codice:
    <?php 
    //-----------------------------------------------------------------------------
    // sendmail.php
    //
    // Copyright (C) 2005 Marcello 'John Doe' Puri
    //
    // Versione 0.9.0 (15/09/2005)
    // Versione 0.9.5 (28/09/2005)
    //  * aggiunto il modulo di salvataggio automatico delle formazioni
    // Versione 0.9.6 (07/10/2005)
    //  * modificata la modalità di passaggio parametri al modulo d'invio e
    //    salvataggio formazione per garantire la compatibilità anche con
    //    Internet Explorer
    //  * la pagina HTML generata dal modulo d'invio e salvataggio formazione
    //    è completa anche in caso di errore
    // Versione 1.0.0 (02/12/2005)
    //  * aggiunto messaggio di debug visualizzato se nessun parametro
    //    viene specificato
    // Versione 1.1.0 (08/09/2006)
    // Modifica effettuata da Guido Zerbinati (21/09/2006)
    //  * Inserito controllo sull'ora di invio delle formazioni
    //-----------------------------------------------------------------------------
    // saveLineUp() e' liberamente ispirata a SalvaFormazione.php di
    // Giuseppe "mR`gImO" (http://www.legadeiforti.info/skindownload.htm)
    //----------------------------------------------------------------------------->
    
    
    $day = date("d",time()); 
    $month = date("m",time()); 
    $year = date("Y",time());
    $hour = date("H", time());
    $min= date("i", time());
    $timeinv= ("$year$month$day$hour$min");
    $time= ("$day/$month/$year $hour.$min");
    $pluto = $_REQUEST['i1'];
    $poppo = $_REQUEST['i2'];
    
    //ATTIVARE CONTROLLI SE SI DESIDERA VEDERE L'ORA INVERTITA
    //print("<b>Termine invio formazioni invertito (pluto): $pluto </b><br>");
    //print("<b>Ora attuale inverita (timeinv): $timeinv </b><br>");
    
      
    if ($timeinv<$pluto){
    
      require('class.phpmailer.php');
      $fantasquadra = '';
      $competizione = '';
      $lega = '';
      
      print("<html>\n");
      print("<head>\n");
      print("<link href=\"../highblue.css\" rel=\"stylesheet\" type=\"text/css\">\n");
      print("</head>\n");
      print("<body>\n");
      
      if (sizeof($_REQUEST) == 0){
        	print('<h3>sendmail.php versione 1.0.0</h3><p>Copyright &copy; 2005 Marcello &quot;John Doe&quot; Puri</p>');
      }  else {
        	$result = checkPassword();
        	if ($result != '')
        		print("<h2 style=\"color: red\">$result</h2>\n");
        	else {
        		$result = gatherData();
        
        		print("<p><b>Lega: </b>$lega<br>\n");
        		print("<b>Fantasquadra: </b>$fantasquadra<br>\n");
        		print("<b>Competizione: </b>$competizione</p>\n");
        
        		$result = sendMail();
        		if ($result != '') {
            print("<h2 style=\"color: red\">$result</h2>\n");
        	}	else {
        			print("<h2>Formazione inviata correttamente</h2>\n");
        
        			if ($_REQUEST['saveData']) {
        				$result = saveLineUp();
        
        				if ($result != '')
        					print("<h2 style=\"color: red\">$result</h2>\n");
        				else
        					print("<h2>Formazione salvata correttamente</h2>\n");
        	}
        }
      }
    }
    print("</body>\n");
    print("</html>\n");
    print("<html>\n");
    print("<head>\n");
    print("<link href=\"../highblue.css\" rel=\"stylesheet\" type=\"text/css\">\n");
    print("</head>\n");
    print("<body>\n");
    print("<br><center><a href=\"Javascript:onclick=window.close();\">Chiudi finestra</a></center>\n");
    print("</body>\n");
    print("</html>\n");
    
    } else {
        
        print("</body>\n");
        print("</html>\n");
        print("<html>\n");
        print("<head>\n");
        print("<link href=\"../highblue.css\" rel=\"stylesheet\" type=\"text/css\">\n");
        print("</head>\n");
        print("<body>\n");
        print("<br><b>Termine invio formazioni: $poppo </b>");
        print("<br><br><b>Data e ora attuali: $time </b>");
        print("<br><h3 style=\"color: red\">Impossibile inviare formazione: il termine di invio è scaduto!</h3>");
        print("<br><center><a href=\"Javascript:onclick=window.opener.location.reload();window.close();\">Chiudi finestra</a></center>\n");
        print("</body>\n");
        print("</html>\n");
    }  
        
            
    function saveLineUp()
    {
       	$idSquadra = $_REQUEST['idSquadra'];
        $giornataDiA = $_REQUEST['giornataDiA'];
       	$idIncontro = $_REQUEST['idIncontro'];
        
       	if (($fp = fopen("../js/fcmFormazioniDati$giornataDiA.js", 'r+')) == false)
        	return 'Impossibile aprire il file formazioni';
        if (!flock($fp, LOCK_EX)) {
        	return 'Impossibile bloccare il file formazioni';
        	fclose($fp);
        }
        
        $oldStaticLines = array();
        $oldLineUpsLines = array();
        while (!feof ($fp)) {
       		$l = fgets($fp, 4096);
       		if (!preg_match('/^a\[\d+\]=new Z\((\d+),(\d+),([^\)]+)\)/', $l, $regs)) array_push($oldStaticLines, $l);
       		else if ($regs[1] != $idIncontro || $regs[2] != $idSquadra) array_push($oldLineUpsLines, "$regs[1],$regs[2],$regs[3]");
       	}
        
       	fseek($fp, 0);
        
       	$i = 1;
       	foreach($oldStaticLines as $l) if (trim($l) != '') fputs($fp, $l);
       	foreach($oldLineUpsLines as $l) {
       		fputs($fp, "a[$i]=new Z($l)\n");
       		$i++;
       	}
       	$newLineUpsLines = explode('|', $_REQUEST['saveData']);
       	foreach($newLineUpsLines as $l) {
       		fputs($fp, "a[$i]=new Z($l)\n");
       		$i++;
      	}
        
       	ftruncate($fp, ftell($fp));
        
       	flock($fp, LOCK_UN);
       	fclose($fp);
    }
        
        
    function gatherData()
    {
        global $fantasquadra, $competizione, $lega;
        
        $body = explode("\n", stripslashes($_REQUEST['body']));
       	list($null, $competizione, $null) = explode(', ', $_REQUEST['subject'], 3);
        if (preg_match('/^Lega: (.+)$/', $body[0], $regs)) $lega = $regs[1];
       	if (preg_match('/^Squadra: (.+)$/', $body[1], $regs)) $fantasquadra = $regs[1];
    }
        
    function sendMail()
    {
      global $fantasquadra, $competizione, $lega;
        
      $mail = new PHPMailer();
      $mail->From = $_REQUEST['sender'];
      $mail->FromName = '';
      $mail->Subject = $_REQUEST['subject'];
      $mail->Body = ($_REQUEST['body']);
      foreach (split('; ', $_REQUEST['recipient']) as $add) $mail->AddAddress($add);
        
      return $mail->Send() ? '' : 'Errore durante durante l\'invio della e-mail';
    }
        
    function checkPassword()
    {
    	$username = $_REQUEST['username'];
    	$password = $_REQUEST['password'];
    
    	if (($fp = fopen('../js/fcmInvioFormazioneDati.js', 'rt')) == false)
    		return 'File password non trovato';
    
    	$found = false;
    	while (!feof ($fp) && !$found) {
    		$buffer = fgets($fp, 4096);
    		$found = ereg('^a=passwords;', $buffer);
    	}
    
    	if (!$found)
    		return 'File password non valido';
    
    	$found = false;
    	$passwords = array();
    	while (!feof ($fp) && !$found) {
    		$buffer = fgets($fp, 4096);
    		if ($buffer == "\n")
    			$found = true;
    		else {
    			$result = ereg('a\[(.+)\]=\"(.+)\"', $buffer, $regs);
    			if ($result) $passwords[$regs[1]] = $regs[2];
    		}
    	}
    
    	if (crypt($password, 'jd') != $passwords[$username])
    		return 'Password non valida';
    
    	return '';
    }
    ?>
    Ovviamente tutto questo fino a dicembre ha funzionato e visto che in giro,più di un utente altervista ha avuto lo stesso identico problema,allora credo che tutto dipenda dai server Altervista..
    Qualcuno potrebbe aiutarmi?
    Grazie

  2. #2
    L'avatar di Gianluca
    Gianluca non è connesso Amministratore
    Data registrazione
    15-02-2001
    Messaggi
    18,035

    Predefinito

    Qual'è il provider di posta degli indirizzi a cui non sono arrivati i messaggi? Hai provato ad inviare i messaggi ad indirizzi email localizzati su altri provider?

    Se tu hai ricevuto le email e altri no, è possibile che il problema sia localizzato presso il provider che gestisce gli indirizzi di posta.
    Gianluca

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da Gianluca Visualizza messaggio
    Qual'è il provider di posta degli indirizzi a cui non sono arrivati i messaggi? Hai provato ad inviare i messaggi ad indirizzi email localizzati su altri provider?

    Se tu hai ricevuto le email e altri no, è possibile che il problema sia localizzato presso il provider che gestisce gli indirizzi di posta.
    Lo escludo perchè provider diversi non hanno ricevuto le mail..yahoo libero hotmail alice email,e credo che sarebbe una coincidenza quasi impossibile che a tutti questi provider non sia arrivata una mail
    Io utilizzo invece gmail...
    Ho anche chiesto se avessero ricevuto la mail come spam ma nulla.
    Ciao

  4. #4
    adw
    adw non è connesso Neofita
    Data registrazione
    10-06-2006
    Messaggi
    7

    Predefinito

    Salve, ho un problema simile, relativo all'invio automatico di email mediante funzioni php e al Safe Mode (un altro utente qualche giorno fa ha aperto un thread su quest'ultimo argomento qui).

    Gestisco il sito http://adw.altervista.org e ho notato che il CMS non riesce più ad inviare le email in automatico (ad esempio le email di conferma registrazione).

    Le iscrizioni al forum del sito vanno approvate da un amministratore (in modo da evitare la registrazione automatica degli spambot). Ogni volta che un'iscrizione viene approvata, il sistema invia una email di conferma all'indirizzo email fornito dall'utente che ha fatto richiesta di registrazione.

    Fino al 2 Gennaio, data in cui è stato approvato l'ultimo iscritto, il sistema funzionava senza alcun problema.
    Oggi, in seguito ad una richiesta da parte di un nuovo utente, ho cliccato il solito tasto per l'approvazione, ma, invece di inviare l'email all'utente e inserire i suoi dati nell'apposita sezione del database, ricevo questo messaggio

    Warning: mail() [function.mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE. in [plugin_per_invio_email: indirizzo_del_file_nascosto_per_motivi_di_ sicurezza] on line 158

    Fatal error:
    Uncaught Error of type [swift_connectionexception] with message [Sending failed using mail() as PHP's default mail() function returned boolean FALSE.]

    in [indirizzo_del_file_nascosto_per_motivi_di_ sicurezza] on line 99

    Cercando nella documentazione del php, ho trovato questo http://it2.php.net/features.safe-mode

    Nell'elenco delle funzioni disabilitate dal Safe Mode c'è anche un parametro della funzione "mail"
    http://it2.php.net/manual/en/feature....functions.php

    In pratica sono i parametri aggiuntivi a creare problemi quando il server php è configurato per utilizzare il Safe Mode.

    Dato che il Safe Mode è deprecato (*), al punto che nella versione 6 di php è stato rimosso, c'è qualche soluzione all'orizzonte (come la disabilitazione del safe mode), o devo modificare manualmente gli script del CMS?


    (*)The PHP safe mode is an attempt to solve the shared-server security problem. It is architecturally incorrect to try to solve this problem at the PHP level, but since the alternatives at the web server and OS levels aren't very realistic, many people, especially ISP's, use safe mode for now.

    EDIT:
    Cosa strana, il codice php del plugin che invia le email contempla la presenza del "Safe Mode", ma evidentemente non riesce ad individuarne la presenza.

    Codice PHP:
    if (!ini_get("safe_mode")) $success = mail($to, $subject, $message, $headers, $params);
    else
    $success = mail($to, $subject, $message, $headers);
    EDIT2:
    Una soluzione che ho trovato è quella di "mozzare" i parametri addizionali nello script del CMS
    Codice PHP:
    if (!ini_get("safe_mode")) $success = mail($to, $subject, $message, $headers);
    else
    $success = mail($to, $subject, $message, $headers);
    A quanto pare la funzione ini_get non riesce a individuare la presenza del Safe Mode.
    C'è qualche soluzione per evitare di editare il codice?
    Ultima modifica di adw : 12-01-2009 alle ore 16.24.40

  5. #5
    L'avatar di Gianluca
    Gianluca non è connesso Amministratore
    Data registrazione
    15-02-2001
    Messaggi
    18,035

    Predefinito

    adw:

    il problema che segnali è noto e sarà risolto a monte con i prossimi aggiornamenti.

    Per adesso puoi ovviarvi applicando la soluzione che hai pensato, probabilmente nel giro di breve tempo il codice originale funzionerà come previsto.

    Puoi comunque indicare il nome dell'applicativo e il percorso dello script da cui hai preso il codice?
    Gianluca

  6. #6
    adw
    adw non è connesso Neofita
    Data registrazione
    10-06-2006
    Messaggi
    7

    Predefinito

    Citazione Originalmente inviato da Gianluca Visualizza messaggio
    adw:

    il problema che segnali è noto e sarà risolto a monte con i prossimi aggiornamenti.

    Per adesso puoi ovviarvi applicando la soluzione che hai pensato, probabilmente nel giro di breve tempo il codice originale funzionerà come previsto.
    Ti ringrazio per la celere risposta.
    Utilizzero' lo script modificato, in attesa di aggiornamenti.

    Citazione Originalmente inviato da Gianluca Visualizza messaggio
    Puoi comunque indicare il nome dell'applicativo e il percorso dello script da cui hai preso il codice?
    Lo script fa parte del pacchetto "Nuke-Evolution", scaricabile da www.nuke-evolution.com
    La cartella in cui si trova è /includes/mail/Swift/Plugin
    Il file è MailSend.php
    Ultima modifica di adw : 12-01-2009 alle ore 16.39.23

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •