Inviare mail da form php anche al mittente

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Buongiorno, sto cercando di capire come poter inviare correttamente una mail tramite il form in php sia al destinatario sia in copia Bcc anche al mittente. Il codice che ho è questo:
PHP:
// genero la stringa che funge da separatore per chi non interpreta il messaggio come html ma come testo
		$boundary = .md5(time());
		
		$header = "MIME-Version: 1.0\n";

		// Intestazione per far capire che ci sono più parti alternative
		$header .= "Content-Type: Multipart/Alternative; boundary = $boundary\n";
		$header .= "boundary=\"$boundary\";\n\n";
		$header .= "Content-Type: text/html; charset=UTF-8\n";
		$header .= "Content-Transfer-Encoding: 7bit\n\n";

		// inizia la prima parte del messagge in testo puro
		$messagge .= '--$boundary\n';
		$messagge .= 'Content-Type: text/plain; charset=\'iso-8859-1' . "\n";
		$messagge .= 'Content-Transfer-Encoding: 7bit' . "\n\n";
		$messagge .= 'Messagge in formato testo.' . "\n\n";
		
		// inizia la seconda parte del messagge in formato html
		$messagge .= "--$boundary\n";
		$messagge .= 'Content-Type: text/html; charset=iso-8859-1' . "\n";
		$messagge .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
		
		// chiusura del messagge con la stringa boundary
		$messagge .= "-–$boundary–-\n";
		$header = 'Bcc:'.$mail. "\n";
		$title = "Richiesta spedita dal sito www.solution-pony-express.com";
		$to = "[email protected]";
		mail($to, $title, $azienda, $messagge, $header) or die();

nel form la mai ldel mittente ha già una variabile ma non riesco a farla funzionare. sapreste darmi una mano?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se tu usassi la classe phpmailer vedresti che è molto semplice sia per i cc che ccn (e molto più sicuro che l'em arrivi)
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ok grazie. L'ho scaricata ed inserita nel codice ma sepresti darmi una mano? Devo cambiare qualcosa? Non vorrei passare una giornata a capire come funziona. almeno non adesso. Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto guarda qui
https://www.mrw.it/php/articoli/inviare-email-classe-phpmailer_631_2.html
(ti mando alla sec pag perche dici di averla gia scaricata)
togli tutto il tuo ambaradan relativo a mail() e aggiungi la classe
poi
PHP:
//...
$messaggio->AddCC($altro_destinatario);
$messaggio->AddBCC($altro_destinatario);//dest. nascosto
$messaggio->AddReplyTo($altro_destinatario); //rispondi a
//...

ho messo $messaggio ma verifica cosa metti in $xyz = new PHPmailer();
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho scaricato il file e i due file in php (phpmailer.inc.php e smtp.inc.php) li ho messi nella radice di xampp. Ho sbagliato? Devo metterli eventualmente dove?

Mi metti
PHP:
]$messaggio->AddBCC($altro_destinatario);//dest. nascosto

ma se io devo inviare la mail ad una mail che il cliente mi ha inserito nel form e l'ho messa come variabile $email. Basta che al posto di $altro_destinatario inserisca la mia variabile?

la modifica che ho fatto è stata quella di togliere le voci ($to, $title, $azienda, $messagge, $header) e mettere la variabile quando ho instanziato la classe.
PHP:
include_once ('phpmailer.inc.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.operatore.it";
$mail->From = "[email protected]";
$mail->AddBcc($email);
 
Ultima modifica:

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Intanto le prove e i dubbi mi assalgono. Ma dove devo inserire l'include? cosa devo cancellare del codice che ho scritto? Solo il contenuto messo tra le parentesi della funzione mail()?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
tutto: da // genero la stringa che funge da separatore per chi non interpreta il messaggio come html ma come testo
a mail($to, $title, $azienda, $messagge, $header) or die();
stai attento che la classe si chiama phpmailer.php non phpmailer.inc.php.
poi ti conveniva (anche perche ci sono i file delle lingue) metterla in una sua cartella es phpmailler/phpmailer.php
l'include dopo i vari post e loro verifica
<?php
//....
require_once "phpmailler/phpmailer.php"; //meglio i require
$mail = new PHPMailer();
//....
?>
se poi non invii da locale ma dal tuo sito in linea è bene che tu non metta nulla relativo all' smtp
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Allego il codice modificato, dimmi se è corretto.
PHP:
<?php
function mailMsg ($status) {
	header('Location:OBIV_contatti.php?status=' .$status);	
	exit;
}

	if(isset($_POST['button'])) {
		$name = $_POST['name'];
		$mittente = $_POST['mittente'];
		$testo = $_POST['messagge'];
		$azienda = $_POST['azienda'];
		
				
		$name = htmlspecialchars(addslashes ($name));
		$mittente = htmlspecialchars(addslashes ($mittente));
		$testo = htmlspecialchars(addslashes ($testo));
		$azienda = htmlspecialchars(addslashes ($azienda));
		
		$time = date('Y,j H:i:s', $_SERVER['REQUEST_TIME']);
		
		define("EOL", "rn");
				

//		$validEmail = "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$";

		if(empty($name) && empty($mittente) && empty($testo)){
		mailMsg(Fn);
		} if (!filter_var($mittente,FILTER_VALIDATE_EMAIL)){ mailMsg(Fm);
		} else {
		$messagge = "Inviata da.\n Nome:".$name."\n Società:".$azienda."\n E-mail:".$mittente."\n Messaggio:".$testo."
		\n".$_SERVER['HTTP_USER_AGENT'];"\n".$_SERVER['REMOTE_ADDR']."n".$time;
		
		//Includo la classe phpmailer				
		require_once ("class.phpmailer.php");
		//Instanzo la classe
		$mail = new PHPmailer();
		$mail->IsSMTP();
		$mail->Host = "smtp";
		
		//Definisco el variabili e le intestazioni della mail
		$mail->From = "[email protected]";
		$mail->FromName = "Solution";
		$mail->Sito = "www";
		$mail->AddBcc = ($mittente);
		$mail->Azienda = ($azienda);
		$mail->Messaggio = ($testo);		

		mail($mail, $testo, $mittente) or die();
		mailMsg (T);
		}} 
else {
mailMsg(F);
}
	

?>
le prove le faccio in locale e ho un warning di questo tipo qua: : mail() expects parameter 1 to be string, object given in riga 48 cioè qua
PHP:
		mail($mail, $testo, $mittente) or die();

Vorrei tenere il controllo della mail e dei campi.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mail($mail, $testo, $mittente) or die(); ????
hai guardato bene l'articolo?
PHP:
//....
if(!$mail->Send()){ //errore di trasmissione
	echo "errore";
}else{ //invio avvenuto
	echo "invio ok";
}
//....
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
:hammer::hammer: come dicono in molto sò de coccio!!!!!!
e si che l'avevo letto e visto. Vabbè. Grazie per il chiarimento. L'errore che mi dava prima adesso non c'è più. Piuttosto non riesco a inviare le mail ne come destinatario ne come bcc. utilizzo xampp e easyphp, ovviamente uno o l'altro. Hai consigli? Premetto i due php.ini sono configurati con l'smtp del mio provider.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

:hammer::hammer: come dicono in molto sò de coccio!!!!!!
e si che l'avevo letto e visto. Vabbè. Grazie per il chiarimento. L'errore che mi dava prima adesso non c'è più. Piuttosto non riesco a inviare le mail ne come destinatario ne come bcc. utilizzo xampp e easyphp, ovviamente uno o l'altro. Hai consigli? Premetto i due php.ini sono configurati con l'smtp del mio provider.


Ciao Paperino78,

Volevo sapere, tu hai risolto il problema dell'invio email ???? E un'altra cosa per caso lavori cono il synology (nas) ???? Fammi sapere qualcosa al riguardo, che sto impazzendo. Grazie, ciao, buona serata.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Allora la cosa è abbastanza lunga e complessa. Almeno lo è per me. In realtà fino a ieri riuscivo ad inviare la mail all'indirizzo mio inserendolo nella funzione mail() $to poi con il problema del Bcc che non riuscivo a configurare ho cambiato metodo ed utilizzo phpmailer. Ma nonostante tutto markup corretto, codice php corretto ma la mail non la ricevo più. Ne come destinatario ne come Bcc. Sinceramente non so come fare. O elimino la funzione bcc e ritorno al vecchio sistema oppure ho bisogno che qualcuno mi dia una mano. Sto realizzando un semplicissimo form di contatto e la richiesta fatta dal cliente dovrebbe essere inviata a me ed in copia a lui per tenerne traccia.

Quanto alla tua seconda domanda no non uso synology (nas).
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Se non ti vuoi completare la vita, ti consiglio di ritornare al vecchio sistema, ossia togliere bbc, mi sembra che si ha la possibilità anche di inviare doppia email a due persone, ma su questo non ci metto la mano sul fuoco. C'è molta differenza tra connessione remota e connessione locale ????
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ma guarda, non voglio diventare matto per aggiungere il campo bcc ma è assurdo che essendoci la possibilità io non possa utilizzarlo. Il problema è che non posso mettere un indirizzo mail dove inviare una seconda mail in quanto questa mail è a me sconosciuta, la inserisce il cliente nel momento in cui mi invia il form di informazioni. Chiamamola una finezza questa cosa del bcc. Quanto al sistema di invio mail se lo fai in locale devi inserire l'smtp del provider che ti fornisce internet, mentre se lo fai in remoto vale la stessa cosa ma il provider sarà quello dove invii il materiale. Esempio: se io modifico le mie pagine sul mio pc e poi non potendo verificare se funzona tutto le invio al server che mi hosta il sito dovrò utilizzare le sue impostazioni. Mentre se le prove la faccio sul mio pc userò l'smtp del mio provider. Dopodichè usando easyphp devo inserire l'smtp se invece userò xampp che ha un suo server di posta interno eviterò di modificare l'smtp. Ma per tutte le delucidazioni ti rimando alla rete.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ragazzi dopo mille prove ho deciso di tornare al "vecchio" sistema mail() e sono riuscito a farlo funzionare. Riesco ad inviare la mail sia a me sia al mittente.

Se comuqnue qualcuno sapesse come risolvere i lproblema con phpmailer mi farebbe piacere saperlo.
allego il codice corretto che funziona

PHP:
$header = "Bcc:" .$email."\r\n";
$title = "Richiesta informazioni";
$to = "[email protected]";
mail($to, $title, $messagge, $header) or die();
mailMsg (T);

la variabile $email è naturalmente il mittente.
Grazie
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Non ho messo il codice completo in quanto era queslla la stringa centrale comuque la inserisco qua
PHP:
<?php
setlocale(LC_TIME, 'ita', 'it_IT.utf8');
function mailMsg ($status) {
	header('Location:OBIV_contatti.php?status=' .$status);	
	exit;
}

	if(isset($_POST['button'])) {
		$name = $_POST['name'];
		$email = $_POST['mittente'];
		$text = $_POST['messagge'];
		$azienda = $_POST['azienda'];
		
				
		$name = htmlspecialchars(addslashes ($name));
		$email = htmlspecialchars(addslashes ($email));
		$text = htmlspecialchars(addslashes ($text));
		$azienda = htmlspecialchars(addslashes ($azienda));
		

		$time = date("H:i:s");
		$time2 = strftime("%A, %d %B %Y");
		

/*		$validEmail = "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$";*/

		if(empty($name) && empty($email) && empty($text)){
		mailMsg(Fn);
		} if (!filter_var($email,FILTER_VALIDATE_EMAIL)){ mailMsg(Fm);
		} else {
		$messagge = "Inviata da: \n Nome:".$name."\n Società:".$azienda."\n E-mail:".$email."\n Messaggio:".$text."
		\n".$_SERVER['HTTP_USER_AGENT']."\n".$_SERVER['REMOTE_ADDR']."\n Orario:".$time."\n Data:".$time2;
		$header = "Content-type: text/html; charset=UTF-8\n";
		$header .= "Content-Transfer-Encoding: 8bit\n";
		$header .= "Bcc:" .$email."\n";
		$title = "Richiesta informazioni";
		$to = "[email protected]";
		mail($to, $title, $messagge, $header) or die();
		mailMsg (T);
		}} 
else {
mailMsg(F);
}
	

?>

Comunque il problema di ora è che non riesco a capire come far andare a capo ogni variabile inviata per mail. Mi arrivano tutte su una riga sola. L'alternativa è quella di cambiare il charset avendo le lettere accentate non visibili correttamente ma in quel caso mi va a capo. Hai suggerimenti?
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,


Da vero ignorante di php, ci sono molti esperti più di me, posso suggerirti di mettere un doppio <br> a ogni fine riga e vedi che ti succede, se c'è troppo spazio, ne metti solo uno.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Grazie per la risposta. Però in php andare a capo lo fai con \n o \r mentre <br> lo metti in html. Il problema era questa voce
PHP:
$header = "Content-type: text/html; charset=UTF-8\n";

che invece sostituito con
PHP:
$header = "Content-type: text/plain; charset=UTF-8\n";

fa il suo dovere. Ora tutto OK!

Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
I [PHP] inviare form con allegato tramite una mail PHP 1
P Creare form e inviare via mail HTML e CSS 2
S inviare the_title() in una mail tramite form html/php PHP 0
U form mail per inviare tracciabilità corriere PHP 0
IImanuII Form mail scelta se inviare il testo in html PHP 5
Pennablu1 Form per inviare e mail HTML e CSS 10
grottafelix Inviare un form a due mail Classic ASP 6
A [PHP] Inviare mail con piu immagini allegate PHP 6
A Non riesco ad inviare una mail attraverso PHP su Xampp PHP 2
angelo85 Sito joomla che permetta agli utenti di inviare mail Joomla 2
M Come inviare due mail diverse con phpmailer PHP 6
M Inviare mail con PHP tramite Mozilla PHP 3
M Inviare mail dopo due giorni lavorativi PHP 3
M Inviare mail con href PHP 2
F inviare una mail con php mailer PHP 3
N Inviare mail di conferma al cliente PHP 0
E Inviare una mail automaticamente, da un account gmail PHP 1
I Inviare E-mail con un ciclo per tabella PHP 3
U Inviare una mail con autenticazione smtp PHP 4
E Estrarre dati dal DB e inviare mail PHP 10
L Inviare Contenuto DIV via Mail PHP 1
C Inviare mail con allegato PDF non uppato PHP 2
M Inviare una mail a più utenti. Problemi SMTP Windows e Software 3
N problemi ad inviare una mail su host gmail Posta Elettronica 1
A Inviare file Excel autocompilato via mail..si ma come? PHP 2
S problemi ad inviare mail in locale con php PHP 13
U aiuto per script php inviare una mail PHP 1
S carrello, non riesco ad inviare tutti gli ordini via mail Classic ASP 9
csi Inviare file jpg in locale alla stampante con php PHP 0
M Inviare un file su un server remoto con JavaScript Javascript 0
E Inviare variabile a PHP da ciclo in JS Javascript 0
M Inviare dati nel db dopo risposta alert PHP 0
L inviare i dati di un form ad un database PHP 6
D INVIARE PAGINA XHTML TRAMITE EMAIL HTML e CSS 1
O [PHP] inviare dati da form e script ajax PHP 0
D [HTML] Inviare un link contenente un' immagine HTML e CSS 4
M Inviare variabili da menu a tendina a pagina php con post PHP 6
I Guida/Tutorial configurare PHPMailer per inviare mails tramite contact form? PHP 2
C non riesco a inviare la posta con account alice Posta Elettronica 1
F [Javascript] Inviare i campi di un form col metodo post Javascript 7
L [Javascript] aiuto non riesco a inviare in get dal server web locale su altervista con httpRequest Javascript 0
L 120 SMS Gratis da inviare in qualsiasi momento Vendere e Acquistare pubblicita' online 0
H [PHP] Inviare dati PHP 3
E [PHP] inviare 2 form consecutivamente PHP 4
S PHP: inviare via email contenuto di una funzione PHP 4
A Creare da form un PDF da inviare come allegato. PHP 1
I Inviare dati POST tramite curl PHP 0
danjde inviare dati testuali verso iframe PHP 5
max_400 Si possono inviare sms con php? PHP 3
M inviare email con access MS Access 3

Discussioni simili