Eroore su invio email

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Apro una nuova discussione, sperando che qualche buon anima mi possa aiutare. Il punto è questo. Ho eseguito una prova, chiedendo di registrare solo l'indirizzo email, l'indirizzo viene registrato, ma non mi invia l'email, anzi mi da un errore. Premessa:

Lavoro tutto sul synology (nas),

Adopero come editor netbeans 7.01

Adopero come email principale gmail che ha la porta 465

Windows 7 home (sul portatile) o Ultimate (sul fisso, dipende se sto a casa o al mare)

Mi connetto tramite una vpn al nas

Ora posto i codici di quello che ho fatto. Il primo si chiama come file insemail.php

Eccolo qua:

PHP:
<?php
require_once("connetti.php");


if (!isset($_POST['reg'])) {
    
    ?>
    <html>
        <head>
        </b></em></hr>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Inserimento Email</title>
    <h1> <center>
            BENVENUTO INSERIRE SOLO L'EMAIL PREGO !!! </H1>
            <b> <hr> <em>  </b> </hr> </em>
                   
            <form action= '' method="POST">
                <center>
                <font face="Comic Sans MS">
                Email:    <input type="text" name="email"  maxlength="40" size ="42"> <br> <br>
   
                </font>
                    <center>
                   <input type="submit" name="reg" value="Invio Email" />
                    <input type="submit" name="uscita" value="Uscita" />
                </center>    

</head>
    <body>
        <?php
      } else {
    
    
    $email = mysql_real_escape_string(trim($_POST['email']));
   
    
 $ok_ko ="";

 
 if($email ==""){ $ok_ko .=  "Attenzione: il campo email deve essere compilato. <br> <br>";}

 if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        $ok_ko .= "indirizzo email non valido<br>";
        
    } 
    
    // Controllo se esiste l'email nel db

$checkemail=mysql_query("SELECT email FROM email WHERE email='$email'");
$vuota=mysql_num_rows($checkemail);
if($vuota > 0){
	echo "<br> <br> <h1> Attenzione: l'email: ".$email." è già presente nell'archivio. Si prega di cambiare email. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content=1; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();

}
if($ok_ko !=""){
		echo "<h1>$ok_ko</h1>";

		echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
  exit();
//recupero i campi di tipo "stringa"
   
   $email     = trim($_POST['email']); 
   
   
        }else{
 $q_i=mysql_query("INSERT INTO email(email) VALUES('$email')");
 
 
echo "<h1> <br>Email registrata correttamente. Controlla la tua email. Dovrebbe essere stat inviata un'email di conferma. Accettare per abilitare l'account. Grazie. !!!</h1>";//e torno al form
			//echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";

require_once("invioemail.php");
}
}
?>
    </body>
</html>

Il secondo, invece si chiama per l'appunto: invioemail.php Ed eccolo qua:

PHP:
<?php

require_once("connetti.php");

$to = "fabiodefelice72@gmail.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "paperinik4@gmail.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";

?>
Ora, considerando che ho la connessione di libero (infostrada), e non mi ricordo purtroppo smtp, che va inserito nel file php.ini, posto qui sotto una semplice configurazione del mio php.ini, situato sul synology. Eccolo qua:

PHP:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.gmail.com
;SMTP = synology (ovviamente qua c'è il mio indirizzo ip)
; http://php.net/smtp-port
smtp_port = 465
;smtp_port = 25

Considerate che, con altervista lo stesso codice e le stesse modifichhe c(ossia mettendo l'indirizzo ip del mio synology), parte. Invece dal synology direttamente no. non capisco più cosa debbo fare. Aiutatemi vi prevo. Un ultima cosa, vi posto la tabella di insemail.

Eccola:

PHP:
create table email (

id 		INT UNSIGNED NOT NULL AUTO_INCREMENT,
email           VARCHAR(40) NOT NULL,
autorizzato 	ENUM('0', '1') DEFAULT '0',
PRIMARY KEY (id)
);

Grazie a tutti in anticipo.
 
Ultima modifica di un moderatore:
Ciao Paperini4,
per quello che so dovresti mettere nel file php.ini l'smtp del provider con il quale ti colleghi. Non mi è chiaro però se tu le modifiche le fai in remoto o in locale. Nel caso fosse la seconda dovresti mettere l'smtp di libero che puoi trovare in rete e dovrebbe essere smtp.libero.it con autenticazione.

Oltre non so. :mavieni::cool:
 
Ciao Paperini4,
per quello che so dovresti mettere nel file php.ini l'smtp del provider con il quale ti colleghi. Non mi è chiaro però se tu le modifiche le fai in remoto o in locale. Nel caso fosse la seconda dovresti mettere l'smtp di libero che puoi trovare in rete e dovrebbe essere smtp.libero.it con autenticazione.

Oltre non so. :mavieni::cool:

Ciao,

Allora, innanzi tutto grazie per avermi risposto. Secondo poi, io mi connetto tramite un programmino che si chiama putty, ed io entro come root e metto la password. Quindi credo che sia in remoto o sbaglio ??? Per quanto riguarda l'smtp, grazie della rinfrescata. Non ricordavo, ma ti confermo che è quello. Se invece dovessi connettermi in remoto cosa dovrei fare secondo te ??? Inoltre, ti ricordo che lavoro tutto sul NAS e l'apparecchio adopera il sistema Linux (ovviamente modificato per la macchina). Un ultimo dubbio in proposito, il php lavora sotto Windows e non sotto Linux giusto ??? Non so cosa fare... Grazie comunque.
 
Ciao, allora per quanto riguarda putty penso sia un collegamento da remoto via terminale, senza interfaccia grafica, ma potrei sbagliarmi, conosco qualcosa di linux ma non ci lavoro da moltissimo tempo. Quanto al php esiste anche su linux, sicuro, oltre non saprei che dirti. L'unica cosa è che potresti testare il lavoro in locale sul pc e poi inviarlo al server per l'uso corrente.

Ciao
 
Ciao

Ciao,

Si difatti è senza grafica putty. Allora sicuramente è in accesso remoto. Però non capisco perchè hai distinto tra lremoto e locale, evidentemente ci deve essere una bella differenza fra loro presumo. Comunque, io sono iscritto ad altervista, e ho fatto la prova dello stesso codice, e l'email la invia. Quindi ciò vuol dire che il settaggio sotto windows dovrebbe essere giusto e i dati di connessione li prende direttamente dal nas. Ossia il famoso file connetti.php o config.pnp a secondo di uno come lo chiama. In xampp, non c'ho provato. Quindi intendo in locale. Ora vado a fare la prova dei scuscini. Ci sentimo se hai notizie nel pome. Ti ringrazio comunque dell'interessamento.

P.S.: Ho messo nel programma phpmailer, cosa che mi hanno suggerito. Adesso mi da sto errore qua che non capisco cosa voglia dire, se magari me lo puoi tradurre grazie.

L'errore è il seguente:

Warning: mail(): Failed to send mail. (500 STAR command unrecognized) in xxx/xxx/xxx/invioemail.php on line 11 Mail Sent.
 
Ultima modifica:
Ho distinto remoto e locale perchè molti preferiscono testare in locale, cioè sul proprio pc, il lavoro e poi inviarlo al server. Quanto all'errore che ti da cioè:
Warning: mail(): Failed to send mail. (500 STAR command unrecognized) in xxx/xxx/xxx/invioemail.php on line 11 Mail Sent.
bisogna vedere il file invioemail.php che hai e vedere alla riga 11 che cosa hai messo. Il problema che ho avuto anche io è quello di tenere la funzone mail() nel codice. Invece con phpmailer la devi togliere e sostituirla con il codice
PHP:
if(!$mail->Send()){ //errore di trasmissione
    echo "errore";
}else{ //invio avvenuto
    echo "invio ok";
}
//....

Ciao alla prox.
 
Ciao

Ciao,

Risvegliato dalla prova cuscini (funzionato alla grande),
Ti ringrazio dei chiarimenti. Ti posto il codice che c'è su invioemail.php. Eccolo qua:


PHP:
require_once("connetti.php");
//include_once ('phpmailer.inc.php');

$to = "xxx72@gmail.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "paperinik4@gmail.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";

La riga 11 di cui parla l'errore è la seguente:

PHP:
11 --> mail($to,$subject,$message,$headers);

Al primo ho tolto la mia email originale con nome cognoem questione di privacy, ma comunque mi chiamo Fabio da Roma. piacere. Io presumo che l'errore suia altrore più che concentrato su quella riga.
 

Discussioni simili