Invio di e-mail tramite PHP

antonio_oti

Nuovo Utente
14 Mar 2014
11
0
0
Ciao a tutti.
Tempo fa feci un semplice script in php che mi permette di inviare ad una serie di destinatari (come bcc) delle informazioni raccolte da un form che l'utente compila dal nostro sito.
Tutto bene sino a qualche mese fa... poi le mail non arrivavano più, ho fatto alcuni test ed effettivamente compilando il form con il mio nome, la mail non arrivava.
Ho iniziato a modificare il PHP, modifica e ri-modifica ed ora non capisco se è lo script che non va o se è il sito dove è salvato.
Ho anche provato a salvarlo su un altro hosting ma il risultato non cambia.
Datemi una mano, per favore.
Vi incollo il php:

PHP:
<?php
		$nome = $_POST[nome];
		$email = $_POST[email];
		$telefono = $_POST[telefono];
		$arrivo = $_POST[arrivo];
		$pernottamenti = $_POST[pernottamenti];
		$persone = $_POST[persone];		
		$note = $_POST[note];
		$mittente = "MIME-Version: 1.0\r\n";
		$mittente .= "Content-type: text/html; charset=iso-8859-1 \r\n";
		$mittente .= "From: . $_POST[email] . \r\n";
        $mittente .= "Bcc: [email protected], [email protected] \r\n"; 
		$oggetto = "Richiesta pervenuta al sito: www.bedandbreakfastrimini.net";
		$testo = '
		<html><head><title>mailing list del sito bedandbreakfastrimini.net</title>
		<style type="text/css">body {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:14px; font-weight:normal; color:#000000;}
		</style></head><body><br><br><p><img src="http://www.bed-and-breakfast-romagna.it/send/logo_home_page.jpg" alt="Bed and breakfast a Rimini"></p>';
		$testo .= "
		<strong>Richiesta di pernottamento pervenuta da:</strong><br><br>
		nome: ".$nome."<br> 
		e-mail: ".$email. "<br>
		telefono: ".$telefono."<br>
		data di arrivo: ".$arrivo."<br>
		numero pernottamenti: ".$pernottamenti."<br>
		numero di persone: ".$persone."<br>
		note: ".$note."<br><br><br>
		BedandbreakfastRimini.net<br>
		</p></body></html>
		"; 
		$destinatario = "[email protected]"; 
		mail($destinatario, $oggetto, $testo, $mittente); 
		?>

Attendo con impazienza una vostra gentile risposta.

Antonio
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
due cose
non usare lo short tag <? ma il yag completo <?php
poi abbandona la funzione mail() e passa alla classe phpmailer o una simile
 

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
ho sostituito nel tuo script le variabili $_POST con delle costanti e ho eseguito lo script,
nel log degli errori php ho trovato

[15-Mar-2014 09:34:02 Europe/Rome] PHP Warning: mail(): Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\Web_Sites\__Test\PHP\test\email.php on line 34


tu cosa leggi nel tuo log degli errori ?
ciao
Marino
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
@marino
la funzione mail() non funziona in locale,
poi da quello che ho capito non gli da errori, ma l'email non arriva, è l'annoso problema della funzione mail() che con certi provider non funziona, es. [email protected] o [email protected] ecc.. dovuto al fatto che l'email viene bloccata.
per quello dicevo di passare alla classe phpmailler che risolve in buona parte tale difetto
 

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
io so che libero non permette invio di mail con sistemi esterni, se non si è clienti Infostrada
a meno di non abbonarsi al servizio a pagamento,

altri providers pretendono la connessione con ssl, rifiutando tutto ciò che non soddisfa ...

ma in ogni caso, non interessa il risultato del mio invio quanto il controllo del log di Antonio, magari, qualcosa c'è ...

ciao
Marino
 

antonio_oti

Nuovo Utente
14 Mar 2014
11
0
0
Provider

Una cosa che non mi è chiara... il provider della posta.
Io attualmente utilizzo FASTWEB, ma a giorni passerò a TELECOM.
Questo potrebbe spiegare alcune cose.
In effetti un anno fa utilizzavo TISCALI e non avevo problemi.
Non riesco a ricollocare temporalmente le cose, in quanto mi sono accorto solo da qualche mese che lo script non funzionava, ma magari erano mesi che non andava.

Fatemi capire, il mio provider, che non è indicato nello script, cosa c'entra con l'invio?
La posta viene inviata tramite lui? Anche se è su un server di POP.it o NIC.ru ?

Questa spiegazione potrebbe fare chiarezza.

Ho anche fatto un test utilizzando PHPmailer 5.2.4 ma con lo stesso, triste risultato.

Attendo risposte.

Grazie mille.
 

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
quando invii le mail con un'applicazione, ti appoggi ad un server che gestisce questo servizio,
il server può essere sul tuo computer se hai installato il software necessario,
oppure può essere nella tua rete se appartenendo ad una organizzazione (azienda) esiste questo servizio,
oppure ti rivolgi ad uno det tanti provider esistenti, tiscali, fasteb, libero, tin, gmail, web.de ... ecc.

a qualunque server tu ti rivolga, devi indicare,nella tua applicazione, l'indirizzo del servizio SMTP di invio delle mail
e qualche volta anche la "porta" di accesso, soprattutto se con accesso protetto

per renderti conto, questo è un elenco che ho trovato con tutti gli indirizzi SMTP dei provider italiani
http://www.dominioweb.org/smtp.html

ora nella configurazione delle tue applicazioni questo indirizzo deve essere indicato,
lo potresti trovare in php.ini oppure in qualche ini_set
esempio

ini_set('SMTP','out.alice.it');
ini_set('smtp_port',25);

per quanto riguarda il blocco, quando cambi provider (tiscali -> fastweb), ti viene bloccata la possibilità
di inviare mail con applicazioni ( ... decinaia di esperienze ... ) ma ti lasciano accedere al portale web
per invio e ricezione della posta, in ogni caso non ti bloccano la ricezione della posta con applicazioni

non credo inoltre ad una differenza funzionale tra mail() e phpmail() ma sono più propenso a pensare ... come sopra

che dire ... poche idee e ben confuse ma spero ti aiutino a risolvere
fatti vivo, ciao
Marino

ps : ovviamente devi avere un account attivo su qualsiasi provider utilizzi
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
Ciao Antonio,
ho voluto imparare qualcosa ... non ho mai spedito un formato html
ebbene come vedrai dalla "png" funziona inviando al server di alice,
ma guardati le impostazioni, ovviamente determinanti
come vedi anche la funzione mail non ha problemi, se i parametri sono corretti
ciao
Marino

PHP:
<?php

# http://localhost/test_site/php/test/email_orig.php

error_reporting(E_ALL);				// per segnalare un eventuale errore a video senza guardare il log
ini_set('display_errors', '1');

$mail_username = "[email protected]";	// account ID registrato con il provider in uso
$mail_password = "mia_password";		// password
$mail_SMTP     = "out.alice.it";		// indirizzo SMTP del provider
$mail_SMTPport = "25";				// porta del servizio di invio
$mail_from     = "From: ".$mail_username;	// mittente, può essere diverso da account ID,
						// per sicurezza però qualche provider lo vuole uguale
ini_set("SMTP"     ,$mail_SMTP);
ini_set("smtp_port",$mail_SMTPport);
ini_set("username" ,$mail_username);
ini_set("password" ,$mail_password);

        $nome		= "nome ospite";
        $email		= "email ospite";
        $telefono	= "telefono ospite";
        $arrivo		= "data arrivo";
        $pernottamenti	= "pernottamenti";
        $persone	= "persone";        
        $note		= "note note note note note note note";

        $mittente = "MIME-Version: 1.0\r\n";
        $mittente .= "Content-type: text/html; charset=iso-8859-1 \r\n";
        $mittente .= $mail_from." \r\n";	// <<<<<<<<<<<<<<< ATTENZIONE tu hai messo l'indirizzo dell'ospite
//      $mittente .= "Bcc: [email protected], [email protected] \r\n"; 

        $oggetto = "Richiesta pervenuta al sito: www.bedandbreakfastrimini.net";
        $testo = '
        <html><head><title>mailing list del sito bedandbreakfastrimini.net</title>
        <style type="text/css">body {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:14px; font-weight:normal; color:#000000;}
        </style></head><body><br><br><p><img src="http://www.bed-and-breakfast-romagna.it/send/logo_home_page.jpg" alt="Bed and breakfast a Rimini"></p>';
        $testo .= "
        <strong>Richiesta di pernottamento pervenuta da:</strong><br><br>
        nome: ".$nome."<br> 
        e-mail: ".$email. "<br>
        telefono: ".$telefono."<br>
        data di arrivo: ".$arrivo."<br>
        numero pernottamenti: ".$pernottamenti."<br>
        numero di persone: ".$persone."<br>
        note: ".$note."<br><br><br>
        BedandbreakfastRimini.net<br>
        </p></body></html>
        ";

//      $destinatario = "[email protected]"; 
        $destinatario = "[email protected]"; 
        mail($destinatario, $oggetto, $testo, $mittente); 
?>
BandB.PNG
 

antonio_oti

Nuovo Utente
14 Mar 2014
11
0
0
Caro [Marino51] ti ringrazio per il tuo aiuto.
Ma ancora non ho risolto la cosa.
Ho utilizzato il tuo script, personalizzando i campi di accesso al server SMTP di FASTWEB.
Ma ora la pagina mi rimane bianca:
http://www.bed-and-breakfast-romagna.it/send/spedisci_richiesta.php
come se non riuscisse a chiudere lo script,
non da messaggi di nessun tipo.

Dove sbaglio????

Quali test posso fare???

Tieni conto che il mio sito http://www.bedandbreakfastrimini.net/ non ha il php quindi per far girare questo script ho usato l'hosting di pop.it
di http://www.bed-and-breakfast-romagna.it ma come ho scritto in precedenza sino a qualche tempo fa tutto funzionava bene.

Ho fatto anche un test spostando lo script su un altro hosting, ma non cambia nulla. Pagina bianca.

Non capisco.

Attendo la vostra luce, per potermi illuminare la strada.

Grazie in anticipo.


//a
 

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
ho inserito dei dati nel form e poi ho cliccato invio
ma ho ricevuto il messaggio che mi viene restituito, di solito, quando c'è un errore nello script e che riporto nell'immagine allegata,
se possibile scarica lo script "spedisci_richiesta.php" dal host e postalo ancora
ciao
Marino
err.PNG
 

antonio_oti

Nuovo Utente
14 Mar 2014
11
0
0
ok
Questo è lo script integrale:

PHP:
<?php 
# [url]http://localhost/test_site/php/test/email_orig.php[/url] 
error_reporting(E_ALL);                // per segnalare un eventuale errore a video senza guardare il log 
ini_set('display_errors', '1'); 
$mail_username = "tonti.antonio";    // account ID registrato con il provider in uso 
$mail_password = "xxyxyxyxyxy";        // password 
$mail_SMTP     = "smtp.fastwebnet.it";        // indirizzo SMTP del provider 
$mail_SMTPport = "25";                // porta del servizio di invio 
$mail_from     = "From: ".$mail_username;    // mittente, può essere diverso da account ID, 
                        // per sicurezza però qualche provider lo vuole uguale 
ini_set("SMTP"     ,$mail_SMTP); 
ini_set("smtp_port",$mail_SMTPport); 
ini_set("username" ,$mail_username); 
ini_set("password" ,$mail_password); 
        $nome        = $_REQUEST[nome]; 
        $email        = $_REQUEST[email]; 
        $telefono    = $_REQUEST[telefono; 
        $arrivo        = $_REQUEST[arrivo]; 
        $pernottamenti    = $_REQUEST[pernottamenti]; 
        $persone    = $_REQUEST[persone];         
        $note        = $_REQUEST[note]; 
        $mittente = "MIME-Version: 1.0\r\n"; 
        $mittente .= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
        $mittente .= $mail_from." \r\n";     
        $mittente .= "Bcc: [email protected], [email protected] \r\n";  
        $oggetto = "Richiesta pervenuta al sito: www.bedandbreakfastrimini.net"; 
        $testo = ' 
        <html><head><title>mailing list del sito bedandbreakfastrimini.net</title> 
        <style type="text/css">body {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:14px; font-weight:normal; color:#000000;} 
        </style></head><body><br><br><p><img src="http://www.bed-and-breakfast-romagna.it/send/logo_home_page.jpg" alt="Bed and breakfast a Rimini"></p>'; 
        $testo .= " 
        <strong>Richiesta di pernottamento pervenuta da:</strong><br><br> 
        nome: ".$nome."<br>  
        e-mail: ".$email. "<br> 
        telefono: ".$telefono."<br> 
        data di arrivo: ".$arrivo."<br> 
        numero pernottamenti: ".$pernottamenti."<br> 
        numero di persone: ".$persone."<br> 
        note: ".$note."<br><br><br> 
        BedandbreakfastRimini.net<br> 
        </p></body></html> 
        "; 
        $destinatario = "[email protected]";  
        mail($destinatario, $oggetto, $testo, $mittente);  
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body,td,th {
	font-family: Verdana, Geneva, sans-serif;
	font-size: 16px;
	color: #09C;
	text-align: center;
}
a:link {
	color: #09C;
	text-decoration: none;
}
a:visited {
	text-decoration: none;
	color: #09C;
}
a:hover {
	text-decoration: underline;
	color: #09C;
}
a:active {
	text-decoration: none;
	color: #09C;
}
</style>
</head>
<body>
<p>&nbsp;</p>
<p>La sua richiesta e' stata inoltrata ai bed and breakfast della provincia di rimini</p>
<p><a href="http://www.bedandbreakfastrimini.net/index.htm">clicchi per ritornare sul portale &quot;Bed and breakfast Rimini&quot;</a></p>
<p><a href="http://www.bedandbreakfastrimini.net/index.htm"><img src="logo_home_page.jpg" alt="logo bed and breakfast rimini" width="450" height="86" border="0" /></a></p>
</body>
</html>

Grazie ancora

//a
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
manca parentesi chiusa ...
$telefono = $_REQUEST[telefono;

$mail_username secondo me dovrebbe avere @fastweb.it o comunque il dominio.it
perché poi viene utilizzato anche come $mail_from che deve avere il dominio

notte
Marino
 

antonio_oti

Nuovo Utente
14 Mar 2014
11
0
0
corretta la parentesi, ora ottengo questo:


Notice: Use of undefined constant nome - assumed 'nome' in /var/www/vhosts/bed-and-breakfast-romagna.it/httpdocs/send/spedisci_richiesta.php on line 19

Notice: Use of undefined constant email - assumed 'email' in /var/www/vhosts/bed-and-breakfast-romagna.it/httpdocs/send/spedisci_richiesta.php on line 20

Notice: Use of undefined constant telefono - assumed 'telefono' in /var/www/vhosts/bed-and-breakfast-romagna.it/httpdocs/send/spedisci_richiesta.php on line 21

Notice: Use of undefined constant arrivo - assumed 'arrivo' in /var/www/vhosts/bed-and-breakfast-romagna.it/httpdocs/send/spedisci_richiesta.php on line 22

Notice: Use of undefined constant pernottamenti - assumed 'pernottamenti' in /var/www/vhosts/bed-and-breakfast-romagna.it/httpdocs/send/spedisci_richiesta.php on line 23

Notice: Use of undefined constant persone - assumed 'persone' in /var/www/vhosts/bed-and-breakfast-romagna.it/httpdocs/send/spedisci_richiesta.php on line 24

Notice: Use of undefined constant note - assumed 'note' in /var/www/vhosts/bed-and-breakfast-romagna.it/httpdocs/send/spedisci_richiesta.php on line 25


Cosa significa?

//a
 

antonio_oti

Nuovo Utente
14 Mar 2014
11
0
0
Il mittente l'ho modificato con:

PHP:
$mittente .= "From: . $_POST[email] . \r\n";

perchè vorrei che apparisse colui che ha fatto la richiesta.

Notte

e grazie...


//a
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
forse già dormivo ... cambia così,
PHP:
 $nome = $_POST['nome'];
 $email = $_POST['email'];
 $telefono = $_POST['telefono'];
 $arrivo = $_POST['arrivo'];
 $pernottamenti = $_POST['pernottamenti'];
 $persone = $_POST['persone'];        
 $note = $_POST['note'];

non credo che tu possa cambiare il mittente, perchè deve essere consono con l'account (fastweb) che invia
per ora lascia

PHP:
 $mittente .= $mail_from." \r\n";

dopo che abbiamo visto recapitare il primo messaggio lo cambieremo
e vedremo se determinante o no, un passo per volta altrimenti non capiamo ....
fammi sapere, ciao
Marino
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
la risposta al "reale" mittente della mail la ottieni aggiungendo in coda dopo "BCC"

$mittente .= "Reply-To: ".$email." \r\n";

ovvero rispondendo alla mail, viene impostato l'indirizzo giusto
ciao
Marino
 

antonio_oti

Nuovo Utente
14 Mar 2014
11
0
0
Funzionaaaaaaaaaaaaaaaaaaaa

Ieri notte poi sono andato a letto, e la mail dopo qualche secondo è arrivata.
Era la parentesi quadra non chiusa.

GRAZIE MILLEEEE

BRAVISSIMI

A presto.

Antonio
 

antonio_oti

Nuovo Utente
14 Mar 2014
11
0
0
Ciao, confermo, lo script funziona perfettamente.
Volevo solo aggiungere una cosa, bisognerebbe modificarlo per fare in modo che se non vengono compilati alcuni campi (che ho identificato nel form come obbligatori) la richiesta non parta.
Ho visto che ci sono diversi metodi per farlo, basterebbe inserire quello più semplice.
Non vorrei però riscasinare di nuovo tutto.
Come posso modificare lo script con questi controlli inseriti??
Grazie di nuovo.

Antonio
 
Discussioni simili
Autore Titolo Forum Risposte Data
M WANSCAM Invio allarme tramite mail IP Cam e Videosorveglianza 4
S Form invio mail html, con invio tramite file denominato invio.php PHP 8
F invio di una mail tramite script php PHP 6
WorldWideWeb Invio e-mail tramite oggetto CDO - VB6 Visual Basic 1
Robby84 Script invio mail tramite smtp PHP 7
T Invio e-mail tramite Swift e Internal Server Error PHP 3
B Invio tramite form mail di più allegati PHP 0
H Invio automatico di e-mail tramite db Classic ASP 1
E Moduli: invio tramite mail HTML e CSS 1
R Invio mail con allegati multipli PHP 0
R Invio mail con allegati da directory PHP 1
Daniele_Carrara Problema timeout - invio mail PHP 7
U PHP bottone per invio mail o ritorno al form PHP 15
G Invio mail con php da dati prelevati da un database PHP 9
AC1 [PHP] Invio Mail PHP 18
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
A [PHP] Problema invio mail con funzione mail() PHP 3
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
paloppa [PHP] Invio mail da form dubbio PHP 17
F Form mail php errore invio PHP 5
Punix [PHP] problema script invio e-mail PHP 2
G Invio Mail con PHPMailer, problemi SMTP PHP 7
cobra_72 [PHP] problema invio multiplo allegati mail PHP 21
Z Limite invio newsletter con PHP - mail() PHP 4
E [Javascript] Messaggio di avvenuto invio mail non visualizzato Javascript 1
F Invio Mail con Javascript Javascript 25
E Rimuovere "dati in memoria" dopo invio mail [PHP] PHP 18
lucarpenter Settaggio invio mail allarme IP camera P2P IP Cam e Videosorveglianza 9
I form invio mail HTML e CSS 1
F Invio automatico mail php PHP 0
Francesco Polese Errore form invio mail+php PHP 22
R Errore invio mail in php PHP 1
M Errore invio mail da php Posta Elettronica 5
P invio mail da form con dati php PHP 7
webmachine Come programmare l'invio di una mail in PHP? PHP 1
W Estrapolare un indirizzo mail di un form durante l'invio PHP 5
Z Invio mail da telecamere HIKVision - HELP!!! IP Cam e Videosorveglianza 0
M configurazione invio mail php PHP 25
I invio mail da form PHP 1
asevenx link cliccabile che non funziona con invio mail PHP 1
P Invio mail diversi destinatari PHP 10
W problemi incomprensibili invio mail dal sito in PHP PHP 3
M Invio mail con destinatari da mysql con inserimento di nome e cognome PHP 6
Il Matta Problema Form e invio mail PHP 2
G WansCam invio mail IP Cam e Videosorveglianza 11
B Problema form mail per invio doppio allegato PHP 1
D [Risolto] Invio mail a blocchi Classic ASP 31
A Problema orario invio mail per form PHP 4
S [risolto] Invio scheda dettagliata in mail Classic ASP 6
O [PHP] Problema Invio Mail PHP 2

Discussioni simili