Repository 32bit  Forum
Repository 64bit  Wiki

Funzione (mail) PHP5

Forum dedicato alla programmazione.

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.

Funzione (mail) PHP5

Messaggioda samiel » mer gen 09, 2008 21:22

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.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Funzione (mail) PHP5

Messaggioda conraid » mer gen 09, 2008 21:38

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?
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12002
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Funzione (mail) PHP5

Messaggioda aschenaz » mer gen 09, 2008 21:47

Succede anche a me: da alcuni hosting le mail su gmail arrivano regolarmente, da altri no...
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4421
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.16
Desktop: KDE 4.10.5

Re: Funzione (mail) PHP5

Messaggioda conraid » mer gen 09, 2008 21:54

ninobi ha scritto:Succede anche a me: da alcuni hosting le mail su gmail arrivano regolarmente, da altri no...


Lui parlava di mittente non di destinatario.
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12002
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Funzione (mail) PHP5

Messaggioda samiel » mer gen 09, 2008 22:14

Il codice è questo:
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 &#232; 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 &#232; stato inviato</h3>
<h3>L'indirizzo e-mail indicato non &#232; 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 &#232; stato inviato correttamente</h3>
<h3>Risponderemo il pi&#249; 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;
}
?>

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.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Funzione (mail) PHP5

Messaggioda conraid » mer gen 09, 2008 22:23

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.
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12002
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Funzione (mail) PHP5

Messaggioda samiel » mer gen 09, 2008 22:54

A parte che è bruttino

Si accettano consigli... Considera che sto muovendo
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.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Funzione (mail) PHP5

Messaggioda conraid » mer gen 09, 2008 22:59

samiel ha scritto:
A parte che è bruttino

Si accettano consigli... Considera che sto muovendo
i miei primissimi passi in php. Hai migliori da propormi?


Domani te ne mando uno che uso io. Premetto che non è OOP, nuitari se legge si arrabbierà :-)

Per l'altro discorso problema di loro allora.
Ma bloccare per dominio è una scelta orribile
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12002
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Funzione (mail) PHP5

Messaggioda nuitari » mer gen 09, 2008 23:04

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.
Avatar utente
nuitari
Linux 2.6
Linux 2.6
 
Messaggi: 777
Iscritto il: dom ott 14, 2007 11:51
Località: San Colombano al Lambro
Slackware: 12.0

Re: Funzione (mail) PHP5

Messaggioda conraid » mer gen 09, 2008 23:07

nuitari ha scritto:AHHHHHH NON E' OOOOOOOOPPPPPPPPPPPP!!!!!!!!! E' IL MAAAAAAAALEEEEEEEEEEEEEEE .

scherzo, mica sono così fanatico dell'oop =) se no non programmerei in C .

in Object-C :-)

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.


A volte mi serve una cosa più semplice.
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?
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12002
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Funzione (mail) PHP5

Messaggioda samiel » gio gen 10, 2008 0:04

Domani te ne mando uno che uso io

Ok, vedi tu se mandarmelo con un PM
o se ti serva le mia e-mail. Grazie!

Per l'altro discorso problema di loro allora.
Ma bloccare per dominio è una scelta orribile

Ho il sospetto che sia così. Ho mandato a quell'indirizzo
una email da gmail lasciando stare il form e non è arrivata.
Adesso scrivo all'assistenza. Però mi pare una follia!

M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Funzione (mail) PHP5

Messaggioda samiel » gio gen 10, 2008 0:10

No, che idiota... Avevo scritto netsons.com...
Dal web le mail di gmail arrivano alla casella di netsons.
Ma dal form no... Mistero!!!!!

M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Funzione (mail) PHP5

Messaggioda aschenaz » gio gen 10, 2008 8:31

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:
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="&nbsp;";
   //$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();
}

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.
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4421
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.16
Desktop: KDE 4.10.5

Re: Funzione (mail) PHP5

Messaggioda conraid » gio gen 10, 2008 12:28

ninobi ha scritto:Rimane, comunque, il problema che segnalavo prima: se inserisco come destinatario un indirizzo gmail, con alcuni hosting funziona, con altri no.


Ed il problema è relativo solo ai form php da quel che mi dite. Strano.

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";

e poi mandi con
Codice: Seleziona tutto
mail($to, $oggetto, $messaggio, $header);


arrivano in giapponese senza fare nient'altro.

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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12002
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Funzione (mail) PHP5

Messaggioda nuitari » gio gen 10, 2008 16:59

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.....
Avatar utente
nuitari
Linux 2.6
Linux 2.6
 
Messaggi: 777
Iscritto il: dom ott 14, 2007 11:51
Località: San Colombano al Lambro
Slackware: 12.0

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite