Invio e mail al destinatario con invio di una copia al mittente

maurizio

Utente Attivo
19 Nov 2012
70
0
0
Buongiorno a tutti
sto realizzando una pagina di contatti ed ho inserito un form per inviare le email per i contatti.il form è presente nella pagina(contatti.html) che si collegata alla pagina mailto.php dove dice che l'email è stata inviata correttamente e si carica il redirect che torna nella pagina contatti.
il mio problema riguarda l'invio delle email anche al mittente oltre che al destinatario. ecco i form che ho inserito:
nella pagina contatti.html:

HTML:
<form method="post" name="modulo" action="mailto.php">
<table border="0" bgcolor="#EEEEEE" cellspacing="2" cellpadding="2">
  <tr>
    <td>Nome:</td>

    <td><input type="text" size="36" name="nome" maxlength="30"></td>
  </tr>
  <tr>
    <td>Email:</td>
    <td><input type="text" size="36" name="email" maxlength="30"></td>
  </tr>
  <tr>
    <td>Messaggio:</td>
    <td><textarea rows="7" cols="30" name="messaggio"></textarea></td>
  </tr>
  <tr>
  <td>&nbsp;</td>
  <td> <input type="button" value="Invia" onClick="Modulo()"> <input type="reset" value="Reset">
    </td>
  </tr>
</table>
 </form>


invece il codice nella pagina di mailto.php

PHP:
<?php
//varie info per email
$oggi = date("j F Y G:i");
$sito = "http://www.miosito.xxx";
$ip = "$_SERVER[REMOTE_ADDR]";
$browser = "$_SERVER[HTTP_USER_AGENT]";
$to = "mia [email][email protected][/email]";
$soggetto = "contatti da $sito";

if(trim($_POST['nome']) == "" OR trim($_POST['email']) == "" OR trim($_POST['messaggio']) == "") {
echo "<font color=\"#FF0000\" face=\"verdana\" size=\"2\"><strong>Tutti i campi sono obbligatori</strong></font>";

} else {

$body = "Richiesta inviata il $oggi da $ip - $browser \n\n";
$body .= "Nome: $_POST[nome] \nEmail: $_POST[email] \nMessaggio: $_POST[messaggio]";

mail("$to","$soggetto","$body");
?>
<html>
<meta http-equiv="Refresh" content="4; contatti.html">
<head>
<title>FalcinelliMaurizio.com</title>
</head>

<body>
<div align="center">
<font size="4" face="verdana"><strong>Email inviata con successo!<br>
A breve i nostri webmaster ti risponderanno. <br>
Attendi l'aggiornamento della pagina...</strong></font>
<br><br>

</div>
</body>
</html>
<?php
}
?>


in poche parole devo inserire il codice che mi permette di inviare l'email anche al mittente(non conosco però l'indirizzo) infatti credo che dovrà essere richiamato in email della pagina contatti.html.

Vi ringrazio in anticipo per la risposta
Maurizio
 
Ultima modifica di un moderatore:
ciao
mi sembra che nel form tu richieda l'indirizzo email del mittente
HTML:
<td>Email:</td>
    <td><input type="text" size="36" name="email" maxlength="30"></td>
  </tr>
quindi devi leggerla e (onde evitare errori nello script) ti convine verificarla con
PHP:
$email=filter_var($email, FILTER_VALIDATE_EMAIL);
che ritorna l'email se sintatticamente corretta o FALSE se sbagliata.
poi abbandona la funzione nativa mail() e passa alla classe phpmailer (o simile)
se guardi in giro per il forum vedrai che la funzione mail() da molti problemi con alcuni indirizzi e tu non sai quale potrebbe essere l'indirizzo del mittente
dai un occhio a:
https://www.mrw.it/php/articoli/inviare-email-classe-phpmailer_631.html

p.s.
usa i tag corretti per i codici (le tre iconcine dopo QUOTE, nell'ordine CODE, HTML, PHP)
 
mmm...più o meno ho capito cosa intendi..potresti per favore correggermi tu il codice, in php non ci capisco tanto..però la mia richiesta è un'altra..quando il cliente scrive un informazione in questi campi lo script invia un email a me...invece i vorrei inviargli anche una copia a lui in automatico...capite cosa intendo...chiedo aiuto dato che sono due giorni che esco pazzo a trovare le guide su internet :(:(
 
ciao
potresti provare così
PHP:
<?php
//...
$ip = "$_SERVER[REMOTE_ADDR]";
$browser = "$_SERVER[HTTP_USER_AGENT]";
//$to = "mia [email][email protected][/email]";
$soggetto = "contatti da $sito";
if(trim($_POST['nome']) == "" OR filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)=== false OR trim($_POST['messaggio']) == "") {
echo "<font color=\"#FF0000\" face=\"verdana\" size=\"2\"><strong>Tutti i campi sono obbligatori</strong></font>";

} else {
$to ="[email protected], ".$_POST['email'];//attento si usa la virgola non ;
//....
?>
in questo modo arriva a te e all'utente, però (es) se l'utente ha pinco@[B]gmail.com[/B] o pallo@[B]libero.it[/B] o altri simili l'email non gli arriva
alcuni host bloccano (non so perchè, ma probabilmente a causa degli header) le email inviate con mail(), per quello ti dico di passare a phpmailler
 
ok grazie mille :):)

ora mi studio phpmailler...il codice di questo phpmailler lo devo inserire in nel div della pagina contatti.html oppure nell'altra pagina mailto.php ?!

scusami se ti sto facendo tutte queste domande ma sto entrando ora in questo mondo:)
 
ok capito..quindi per sintetizzare dovrebbe uscire una cosa del genere:
contatti.html :(il form dell'email)
PHP:
 <form method="post" name="modulo" action="mailto.php">
<table border="0" bgcolor="#EEEEEE" cellspacing="2" cellpadding="2">
  <tr>
    <td>Nome:</td>

    <td><input type="text" size="36" name="nome" maxlength="30"></td>
  </tr>
  <tr>
    <td>Email:</td>
    <td><input type="text" size="36" name="email" maxlength="30"></td>
  </tr>
  <tr>
    <td>Messaggio:</td>
    <td><textarea rows="7" cols="30" name="messaggio"></textarea></td>
  </tr>
  <tr>
  <td>&nbsp;</td>
  <td> <input type="button" value="Invia" onClick="Modulo()"> <input type="reset" value="Reset">
    </td>
  </tr>
</table>
 </form>


mentre nella pagina mailto.php

PHP:
<?
//includiamo la classe PHPMailer
require "phpmailer/class.phpmailer.php";

//istanziamo la classe
$messaggio = new PHPmailer();
$messaggio->IsSMTP();
$messaggio->Host='Host SMTP';

//definiamo le intestazioni e il corpo del messaggio
$messaggio->From='[email protected]';
$messaggio->AddAddress('[email protected]');
$messaggio->AddReplyTo('[email protected]'); 
$messaggio->Subject='Prova.';
$messaggio->Body=stripslashes('Ciao!!!!');

//definiamo i comportamenti in caso di invio corretto 
//o di errore
if(!$messaggio->Send()){ 
  echo $messaggio->ErrorInfo; 
}else{ 
  echo 'Email inviata correttamente!';
}

//chiudiamo la connessione
$messaggio->SmtpClose();
unset($messaggio);

poi il codice html con il relativo messaggio inv
?>

solo che così ho un piccolo problema che mi da errore...cosa devo fare?!...devo cambiare qualcosa?..scusatemi ma sono all'inizio e vorrei capirlo un pò meglio.
 
Ultima modifica di un moderatore:
ecco qui l'errore:

Warning: require(phpmailer/class.phpmailer.php): failed to open stream: No such file or directory in /web/htdocs/www.falcinellimaurizio.com/home/mailto.php on line 3 Warning: require(phpmailer/class.phpmailer.php): failed to open stream: No such file or directory in /web/htdocs/www.falcinellimaurizio.com/home/mailto.php on line 3 Fatal error: require(): Failed opening required 'phpmailer/class.phpmailer.php' (include_path='.:/php5.3/lib/php/') in /web/htdocs/www.falcinellimaurizio.com/home/mailto.php on line 3


cosa devo fare?!..devo cambiare qualche parola nel codice?!..devo cambiare aggiungere qualche pagina in più?..dimenticavo di dirvi che uso aruba come server..
 
ora vi spiego cosa ho fatto di preciso.

sono andato sul sito ed ho scaricato la versione php4 di phpmailer
ho caricato la cartella senza cambiare nomi tramite filezilla nella mia root del sito su server linux di aruba
ho modificato il file mailto.php dove ho inserito il codice senza cambiare nessuna riga(dopo il codice php c'è il codice di html e javascript che conferma l'email inviata e il javascript torna nella pagina precedente)

fatto ciò mi da quell'errore...

altro non ho fatto...devo dire che il form "grafico" è nella pagina contatti.htm , che per caso devo richiamarlo alla pagina mailto.php?

ho provato a guardare tanti tutorial ma non riesco a capire di preciso dove sbaglio :(


qualcuno puoi darmi una mano?casomai cambiando le parole nel codice che dovrò inserire con la mia email,ecc...
 
Scrivendo questa riga di codice:
PHP:
require "phpmailer/class.phpmailer.php";
stai dicendo di includere un file che si trova nella cartella phpmailer ma deve stare nella stessa cartella di mailto.php se scrivi così.
Allora c'è da chiedersi:
La tua pagina mailto.php è nella stessa cartella dove si trova phpmailer? (Cioè nella root) se non lo è dovresti cambiare il require con qualcosa tipo:
PHP:
require "./phpmailer/class.phpmailer.php";
i punti vanno dietro di una cartella. Puoi anche scrivere io percorso assoluto come mostrato in questa guida.
 
si il phphmailer si trova nella root principale insieme alle altre pagine mailto.php index.html contatti.html,ecc.. il nome della cartella è "varinsert_for_SPAW2"

quel codice:
PHP:
require "phpmailer/class.phpmailer.php";
lo devo inserire nella pagina mailto.php oppure in nel form di contatti.html?
questo è il codice di contatti.html:
HTML:
         <form method="post" name="modulo" action="mailto.php">
<table border="0" bgcolor="#EEEEEE" cellspacing="2" cellpadding="2">
  <tr>
    <td>Nome:</td>

    <td><input type="text" size="36" name="nome" maxlength="30"></td>
  </tr>
  <tr>
    <td>Email:</td>
    <td><input type="text" size="36" name="email" maxlength="30"></td>
  </tr>
  <tr>
    <td>Messaggio:</td>
    <td><textarea rows="7" cols="30" name="messaggio"></textarea></td>
  </tr>
  <tr>
  <td>&nbsp;</td>
  <td> <input type="button" value="Invia" onClick="Modulo()"> <input type="reset" value="Reset">
    </td>
  </tr>
</table>
 </form>

mentre il codice della pagina mailto.php:
PHP:
<?
//includiamo la classe PHPMailer
require "phpmailer/class.phpmailer.php";

//istanziamo la classe
$messaggio = new PHPmailer();
$messaggio->IsSMTP();
$messaggio->Host='Host SMTP';

//definiamo le intestazioni e il corpo del messaggio
$messaggio->From='[email protected]';
$messaggio->AddAddress('[email protected]');
$messaggio->AddReplyTo('[email protected]'); 
$messaggio->Subject='Prova.';
$messaggio->Body=stripslashes('Ciao!!!!');

//definiamo i comportamenti in caso di invio corretto 
//o di errore
if(!$messaggio->Send()){ 
  echo $messaggio->ErrorInfo; 
}else{ 
  echo 'Email inviata correttamente!';
}

//chiudiamo la connessione
$messaggio->SmtpClose();
unset($messaggio);
?>

quindi cosa devo fare?!..cosa devo modificare nel codice mailto.php?!...non riesco a capire bene le parole che devo cambiare e dove devo inserire i codici..grazie mille per l'aiuto :)
 
Ultima modifica di un moderatore:
No allora non dovrebbe essere un problema. L'errore dice che non riesce ad aprire il file e perché non lo trova. Verifica che nella cartella phpmailer c'è la pagina class.phpmailer.php.
 
ciao
dai un occhio ai commenti
PHP:
<?php
//includiamo la classe PHPMailer metti l'once
require_once "phpmailer/class.phpmailer.php";
//istanziamo la classe
$messaggio = new PHPmailer();
//$messaggio->IsSMTP();//intanto togli questa e
//$messaggio->Host='Host SMTP';//questa
//possono servire per inviare da locale generelmente l'host remoto non le accetta
//ma se vuoi inviare da locale devi aggiungere anche
//messaggio->Host     = "smtp.tuo_host"; // SMTP servers, esempio se usi fastweb sarà
//$messaggio->Host     = "smtp.fastwebnet.it";
//$messaggio->Username = "tuo_username";  // SMTP username
//$messaggio->Password = "tua_password"; // SMTP password

//e aggiungi
$messaggio->IsHTML(true); // invio l'email in formato HTML può essere che ti serva in seguito
$messaggio->SetLanguage('it','language/');//ti da i messaggi in italiano
$messaggio->Subject="oggetto dell'email";
//definiamo le intestazioni e il corpo del messaggio
$messaggio->From='[email protected]';
$messaggio->AddAddress('[email protected]');
$messaggio->AddCC('[email protected]');//invia copia al mittente (visibile) oppure metti
//$messaggio->AddBCC('[email protected]');//campo nascosto (meglio per la privacy)
$messaggio->AddReplyTo('[email protected]'); //questo ti serve per quando ti arriva l'email e fai rispondi
$messaggio->Subject='Prova.';
$messaggio->Body=stripslashes('Ciao!!!!');
//definiamo i comportamenti in caso di invio corretto 
//o di errore
if(!$messaggio->Send()){ 
  echo $messaggio->ErrorInfo; 
}else{ 
  echo 'Email inviata correttamente!';
}
//e queste non servono
//chiudiamo la connessione
//$messaggio->SmtpClose();
//unset($messaggio);
?>
e prova

p.s.
usa i tag giusti, a sx del tag quote, nell'ordine CODE, HTML, PHP
 
ok perfetto...nella cartella di phpmailer non ho trovato il file specificato...strano perchè ho scaricato tutta dal sito originale..

ora lo trovo su internet...

nel frattempo inserisco il codice nella pagina mailto.php

la struttura della pagina è così:

<php>
<html>con il redirect tramite javascript e il messaggio di invio in html

giusto?!
 
ok ragazzi ho risolto...scusatemi per le molte domande ma alla fine ci sono riuscito e grazie a voi :)

ora sto attendendo entrambi l'email :)
 
che non ho errori :)

però entrambi l'email ancora non mi arrivano..credo di aver cantato vittoria prima del traguardo :(:(
cosa posso fare?!

ho configurato tutto secondo i commenti che mi avete inviato...cosa manca da fare?!
 

Discussioni simili