Funzione (mail) PHP5
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
-
- Staff
- Messaggi: 5511
- Iscritto il: ven 16 gen 2004, 0:00
- Nome Cognome: Mauro Sacchetto
- Slackware: 13.0
- Kernel: 2.26
- Desktop: KDE
- Distribuzione: anche Debian
- Località: Venezia
Funzione (mail) PHP5
I raffinati potrebbero obiettare che PHP non è propriamente un linguaggio
di programmazione, ma credo comunque che questo sia il forum più adatto,
visto che adesso ce l'abbiamo... Ma veniamo al dunque. Ho caricato
un piccolo sito su Netsons è vi ho inserito una pagina con un form php
per inviare e-mail. E fin qui nulla di strano. Però, cosa che mi risulta
incomprensibile: se attraverso questo form invio mail dove il mittente
dichiara come suo un indirizzo e-mail appartenente a certo domini
(tele2, netsons) oppure se ne inventa uno falso, allora le mail arrivano.
Se invece l'indirizzo inserito è di gmail o di virgilio, allora non arriva
nulla. Di che si tratta secondo voi? Liste bianche e liste nere?
Grazie
M.
di programmazione, ma credo comunque che questo sia il forum più adatto,
visto che adesso ce l'abbiamo... Ma veniamo al dunque. Ho caricato
un piccolo sito su Netsons è vi ho inserito una pagina con un form php
per inviare e-mail. E fin qui nulla di strano. Però, cosa che mi risulta
incomprensibile: se attraverso questo form invio mail dove il mittente
dichiara come suo un indirizzo e-mail appartenente a certo domini
(tele2, netsons) oppure se ne inventa uno falso, allora le mail arrivano.
Se invece l'indirizzo inserito è di gmail o di virgilio, allora non arriva
nulla. Di che si tratta secondo voi? Liste bianche e liste nere?
Grazie
M.
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: Funzione (mail) PHP5
Anche se andrebbe visto il form, solitamente non si guarda il mittente, ma l'IP. Altrimenti addio. Quindi
Magari è la stessa netsons ad avere qualche blocco, ma mi sembra strano.
A quale indirizzo dovrebbero arrivare?
Magari è la stessa netsons ad avere qualche blocco, ma mi sembra strano.
A quale indirizzo dovrebbero arrivare?
- aschenaz
- Staff
- Messaggi: 4623
- Iscritto il: mer 28 lug 2004, 0:00
- Nome Cognome: Nino
- Slackware: current
- Kernel: 5.4.x
- Desktop: KDE
- Località: Reggio Calabria
- Contatta:
Re: Funzione (mail) PHP5
Succede anche a me: da alcuni hosting le mail su gmail arrivano regolarmente, da altri no...
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: Funzione (mail) PHP5
Lui parlava di mittente non di destinatario.ninobi ha scritto:Succede anche a me: da alcuni hosting le mail su gmail arrivano regolarmente, da altri no...
-
- Staff
- Messaggi: 5511
- Iscritto il: ven 16 gen 2004, 0:00
- Nome Cognome: Mauro Sacchetto
- Slackware: 13.0
- Kernel: 2.26
- Desktop: KDE
- Distribuzione: anche Debian
- Località: Venezia
Re: Funzione (mail) PHP5
Il codice è questo:
Ho scritto all'assistenza Netsons, vediamo se ne sanno qualcosa...
L'indirizzo è quello di Netsons. Adesso provo a cambiarlo con uno
dei miei account, vediamo se funge...
M.
Codice: Seleziona tutto
<?php
if(isset($_POST['name']) && isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['messaggio'])){
// indirizzo e-mail destinatario
$receiverMail = "teatroinfolle@netsons.org";
// pulizia dei dati inseriti
$name = ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));
$email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
$subject = ltrim(rtrim(strip_tags(stripslashes($_POST['subject']))));
$messaggio = ltrim(rtrim(strip_tags($_POST['messaggio'])));
// lettura dell'indirizzo IP
$ip = getenv("REMOTE_ADDR");
// formattazione del messaggio ( \n per le messe a capo )
$msgformat = "Messaggio da: $name ($ip)\nEmail: $email\n\n$messaggio";
// verifica campi obbligatori
if(empty($name) || empty($email) || empty($subject) || empty($messaggio)) {
echo "<br /><br /><h3>Il messaggio non è stato inviato</h3>
<h3>Sei pregato di compilare tutti i campi</h3><br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /><br />"; }
//verifica l'indirizzo mail
elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
echo "<br /><br /><h3>Il messaggio non è stato inviato</h3>
<h3>L'indirizzo e-mail indicato non è valido</h3><br /> <br /> <br /> <br /> <br /> <br /> <br /><br /> <br />"; }
else{
//invio del messaggio
mail($receiverMail, $subject, $msgformat, "From: $name <$email>");echo "<br /><br /><h3>Il messaggio è stato inviato correttamente</h3>
<h3>Risponderemo il più presto possibile</h3>
<h3>Grazie di averci scritto!</h3><br /> <br /> <br /> <br /> <br /> <br /> <br />"
;
}
}
else{
//metti il form
$self=$_SERVER['PHP_SELF'];
echo <<<FRM
<h3>Puoi inviare una comunicazione <br /> a <span class="white">TEATRO IN F<span class="emph">O</span>LLE</span> <br /> direttamente da questo form</h3>
<h3>Riempi i campi richiesti <br /> e premi il pulsante "Invia"</h3>
<br /><br />
<form action="$self" method="post">
Nome:<br /><br />
<input name="name" size="50" maxlength="40" />
<br /><br /><br />
Indirizzo e-mail:<br /><br />
<input name="email" size="50" maxlength="40" />
<br /><br /><br />
Oggetto:<br /><br />
<input name="subject" size="50" maxlength="40" />
<br /><br /><br />
Messaggio:<br /><br />
<textarea name="messaggio" cols="50" rows="8"></textarea>
<br /><br /><br />
<input type="submit" value="Invia" />
<input type="reset" value="Cancella" />
</form>
FRM;
}
?>
L'indirizzo è quello di Netsons. Adesso provo a cambiarlo con uno
dei miei account, vediamo se funge...
M.
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: Funzione (mail) PHP5
A parte che è bruttino, l'ho provato e funziona con mittente gmail su altro server
Nel senso che mi arriva una mail
tu devi capire se parte. Scrivi in qualche log.
Se parte, se cioè la funzione mail fa il suo lavoro, a quel punto è il server di netsons che blocca per chissà quale motivo.
Nel senso che mi arriva una mail
tu devi capire se parte. Scrivi in qualche log.
Se parte, se cioè la funzione mail fa il suo lavoro, a quel punto è il server di netsons che blocca per chissà quale motivo.
-
- Staff
- Messaggi: 5511
- Iscritto il: ven 16 gen 2004, 0:00
- Nome Cognome: Mauro Sacchetto
- Slackware: 13.0
- Kernel: 2.26
- Desktop: KDE
- Distribuzione: anche Debian
- Località: Venezia
Re: Funzione (mail) PHP5
Si accettano consigli... Considera che sto muovendoA parte che è bruttino
i miei primissimi passi in php. Hai migliori da propormi?
Ho fatto un esperimento, sostituendo $receiverMail
con un altro account, e le mail arrivano tutte.
Dunque il form spedisce regolarmente e, a quanto
pare, le mail vengono in effetti inoltrate.
Sembra che il blocco sia a livello ricezione... boh...
Grazie
M.
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: Funzione (mail) PHP5
Domani te ne mando uno che uso io. Premetto che non è OOP, nuitari se legge si arrabbieràsamiel ha scritto:Si accettano consigli... Considera che sto muovendoA parte che è bruttino
i miei primissimi passi in php. Hai migliori da propormi?
Per l'altro discorso problema di loro allora.
Ma bloccare per dominio è una scelta orribile
- nuitari
- Linux 3.x
- Messaggi: 777
- Iscritto il: dom 14 ott 2007, 12:51
- Slackware: 12.0
- Località: San Colombano al Lambro
- Contatta:
Re: Funzione (mail) PHP5
AHHHHHH NON E' OOOOOOOOPPPPPPPPPPPP!!!!!!!!! E' IL MAAAAAAAALEEEEEEEEEEEEEEE .
scherzo, mica sono così fanatico dell'oop =) se no non programmerei in C .
Comunque, ti consiglio di usare e scaricare phpmailer. E' una classe per l'invio delle mail che supporta pienamente il formato mime/multipart e permette anche di usare l'autenticazione SMTP. Ho scritto anche un mod per incorporare le immagini, se la usi te lo passo.
scherzo, mica sono così fanatico dell'oop =) se no non programmerei in C .
Comunque, ti consiglio di usare e scaricare phpmailer. E' una classe per l'invio delle mail che supporta pienamente il formato mime/multipart e permette anche di usare l'autenticazione SMTP. Ho scritto anche un mod per incorporare le immagini, se la usi te lo passo.
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: Funzione (mail) PHP5
in Object-Cnuitari ha scritto:AHHHHHH NON E' OOOOOOOOPPPPPPPPPPPP!!!!!!!!! E' IL MAAAAAAAALEEEEEEEEEEEEEEE .
scherzo, mica sono così fanatico dell'oop =) se no non programmerei in C .
A volte mi serve una cosa più semplice.nuitari ha scritto: Comunque, ti consiglio di usare e scaricare phpmailer. E' una classe per l'invio delle mail che supporta pienamente il formato mime/multipart e permette anche di usare l'autenticazione SMTP. Ho scritto anche un mod per incorporare le immagini, se la usi te lo passo.
comunque samiel potrebbe risolvere con l'smtp esterno in effetti, sempre che netsons gli permetta di farlo
no, correggo cavolata, perché è in ricezione ha detto.
@samiel
MA se ti mandi le mail da un client di posta con mittente gmail ti arrivano a quell'indirizzo?
-
- Staff
- Messaggi: 5511
- Iscritto il: ven 16 gen 2004, 0:00
- Nome Cognome: Mauro Sacchetto
- Slackware: 13.0
- Kernel: 2.26
- Desktop: KDE
- Distribuzione: anche Debian
- Località: Venezia
Re: Funzione (mail) PHP5
Ok, vedi tu se mandarmelo con un PMDomani te ne mando uno che uso io
o se ti serva le mia e-mail. Grazie!
Ho il sospetto che sia così. Ho mandato a quell'indirizzoPer l'altro discorso problema di loro allora.
Ma bloccare per dominio è una scelta orribile
una email da gmail lasciando stare il form e non è arrivata.
Adesso scrivo all'assistenza. Però mi pare una follia!
M.
-
- Staff
- Messaggi: 5511
- Iscritto il: ven 16 gen 2004, 0:00
- Nome Cognome: Mauro Sacchetto
- Slackware: 13.0
- Kernel: 2.26
- Desktop: KDE
- Distribuzione: anche Debian
- Località: Venezia
Re: Funzione (mail) PHP5
No, che idiota... Avevo scritto netsons.com...
Dal web le mail di gmail arrivano alla casella di netsons.
Ma dal form no... Mistero!!!!!
M.
Dal web le mail di gmail arrivano alla casella di netsons.
Ma dal form no... Mistero!!!!!
M.
- aschenaz
- Staff
- Messaggi: 4623
- Iscritto il: mer 28 lug 2004, 0:00
- Nome Cognome: Nino
- Slackware: current
- Kernel: 5.4.x
- Desktop: KDE
- Località: Reggio Calabria
- Contatta:
Re: Funzione (mail) PHP5
Prima avevo letto in fretta (chiedo venia).
Il tuo problema io l'ho risolto inserendo un mittente fisso e aggiungendo l'e-mail del contatto in "reply-to".
Questo è lo script che ho fatto io - ho modificato parecchie cose (non escludo qualche errore, perciò), perché l'originale richiama dei metodi della classe che uso io - ho tolto anche qualche parte di cui parlerò dopo:
Non sarà il massimo, ma funziona abbastanza bene.
Avevo fatto una versione che creava un messaggio in html, ma non sempre veniva visualizzato correttamente ed ho preferito rinunciarci.
Io utilizzo da un po' anche un sistema di anti-spam testuale accessibile che fa capo a delle domande-risposte in una tabella mysql. Preferisco non usare il captcha (che personalmente odio). In ogni caso, qualcosa bisogna fare, altrimenti si viene sommersi dallo spam.
Uso mysql perché voglio lasciare traccia dei contatti e anche perché, così, ho risolto definitivamente il noioso problema delle vocali accentate (coi soliti sistemi avevo esiti diversi in base alle diverse versioni di php).
Rimane, comunque, il problema che segnalavo prima: se inserisco come destinatario un indirizzo gmail, con alcuni hosting funziona, con altri no.
Il tuo problema io l'ho risolto inserendo un mittente fisso e aggiungendo l'e-mail del contatto in "reply-to".
Questo è lo script che ho fatto io - ho modificato parecchie cose (non escludo qualche errore, perciò), perché l'originale richiama dei metodi della classe che uso io - ho tolto anche qualche parte di cui parlerò dopo:
Codice: Seleziona tutto
// modifica queste variabili
$to="destinatario-email";
$mitt="mittente"; // inserisci un'email fissa: es. admin@dominio
$site="nomesito";
$paginaform="indirizzopaginadelform";
$nm=trim($_POST["nome"]);
$cg=trim($_POST["cognome"]);
$em=trim($_POST["email"]);
isset($_POST["telefono"]) ? $tl=trim($_POST["telefono"]) : $tl=0;
$tx=trim($_POST["testo"]);
if($nm=="" | $em=="" | $cg=="" | $tx=="") {
$paginaform.="&messaggio=campo-richiesto";
// devi impostare la visualizzazione del messaggio nel form
// naturalmente io ho messo & perché suppongo ci sia già un ? nella querystring
// altrimenti sostituisci (qui e sotto) & con ?
header("Location: $paginaform");
exit();
} elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})",$em)) {
$paginaform.="&messaggio=email-non-valida";
header("Location: $paginaform");
exit();
} else {
// poi spiego perché uso mysql...
$qry=sprintf("INSERT INTO contatti VALUES('','%s','%s','%s','%s','%s')",addslashes($nm),addslashes($cg),$em,$tl,addslashes($tx));
$res=mysql_query($qry) or die("inserimento fallito");
$id=mysql_insert_id();
$mrq="SELECT * FROM contatti WHERE ID='$id'";
$mrr=mysql_query($mrq);
$mrw=mysql_fetch_object($mrr);
$sub="Contatti sito $site";
$mnm=stripslashes($mrw->Nome);
$mcg=stripslashes($mrw->Cognome);
$mrw->Testo!="" ? $mtx=wordwrap(stripslashes($mrw->Testo),70) : $mtx=" ";
//$headers = 'MIME-Version: 1.0' . "\r\n";
//$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers = 'From: $mitt\r\n";
$headers .= 'Reply-To: '.$mrw->Email. "\r\n";
$message=<<<EOM
Hai ricevuto un contatto dal sito $site
-------------------------------------------------------------------
Da:\t$mnm $mcg
E-mail:\t$mrw->Email
Telefono:\t$mrw->Telefono
-------------------------------------------------------------------
Contenuto del messaggio:
-------------------------------------------------------------------
$mtx
EOM;
if(mail($to,$sub,$message,$headers)) {
$paginaform.="&messaggio=messaggio-inviato";
header("Location: $paginaform");
exit();
} else {
$paginaform.="&messaggio=invio-fallito";
header("Location: $paginaform");
exit();
}
Avevo fatto una versione che creava un messaggio in html, ma non sempre veniva visualizzato correttamente ed ho preferito rinunciarci.
Io utilizzo da un po' anche un sistema di anti-spam testuale accessibile che fa capo a delle domande-risposte in una tabella mysql. Preferisco non usare il captcha (che personalmente odio). In ogni caso, qualcosa bisogna fare, altrimenti si viene sommersi dallo spam.
Uso mysql perché voglio lasciare traccia dei contatti e anche perché, così, ho risolto definitivamente il noioso problema delle vocali accentate (coi soliti sistemi avevo esiti diversi in base alle diverse versioni di php).
Rimane, comunque, il problema che segnalavo prima: se inserisco come destinatario un indirizzo gmail, con alcuni hosting funziona, con altri no.
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: Funzione (mail) PHP5
Ed il problema è relativo solo ai form php da quel che mi dite. Strano.ninobi ha scritto: Rimane, comunque, il problema che segnalavo prima: se inserisco come destinatario un indirizzo gmail, con alcuni hosting funziona, con altri no.
Per le lettere accentate devi dire cosa usi nell'intestazione della mail, che naturalmente deve essere lo stesso che hai nella pagine html. Tanto in php non elabori la cosa.
Io ho fatto form anche per siti in giapponese usando l'utf-8
Metti sia l'header http sia il content-type nella pagina html in utf-8, e poi nella mail ci aggiungi qualcosa tipo
Codice: Seleziona tutto
$header .= "Content-type: text/plain; charset=UTF-8\n";
Codice: Seleziona tutto
mail($to, $oggetto, $messaggio, $header);
Fai finta di essere un client mail, devi settare anche il content-type altrimenti prende quello di default che spesso è ASCII
@samiel
Se quello mandato da ninobi ti funziona non ti mando il mio, fammi sapere
alla fine fanno tutti la stessa cosa più o meno, ed io non ho soluzioni per netsons
- nuitari
- Linux 3.x
- Messaggi: 777
- Iscritto il: dom 14 ott 2007, 12:51
- Slackware: 12.0
- Località: San Colombano al Lambro
- Contatta:
Re: Funzione (mail) PHP5
Vedi perchè è utile usare una classe all-purpose? Se hai delle librerie (che siano classi o meno) programmate come si deve, non ha scopo riscrivere ed inventare ogni volta l'acqua calda.. è già tutto li dentro. E non è che usi chissà quali risorse immani.....