Salve,
Ho letto la pillola molto interessante, vorrei aggiungere la mia esperienza a proposito sul BCC di PHPMailer.
Piccola premessa, ho visto che sul sito di PHPmailer, esiste uno script apposito per la "semplice" form (PHPMailer-FE (Form2Email)) non ho approfondito la lettura, in quando ho usato la prima volta PHPmailer per conto di un cliente e dove il server non permette di usare la funzione mail() utilizzo al "volo" PHPmailer.
Per avere il BCC con PHPmailer inizializzo due volte la classe, per fare un lavoro pulito dovrei usare la funzione clone() ma non essendo bravo a "manovrare" sulle classi ho trovato la scorciatoia.
di seguito posto il codice del file che invia le due mail per una migliore comprensione:
Codice PHP:
<?php
ob_start();
session_start();
if (!isset($_SESSION['contatto']) || $_SESSION['contatto'] != 'contatto' )
{
session_unset();
session_destroy();
header('Location:' . 'contattaci.php');
}
// connessione al db...
include('include/db.inc.php');
// connessione alle variabili che mi servono
include('include/variabili.php');
if (isset($_POST['cnt']) && $_POST['cnt'] == $_SESSION['captcha'])
{
//controllo per verificare che tutti i campi abbiano un valore
if ( empty($_POST['nome_ric']) || empty($_POST['cognome_ric']) || empty($_POST['email']) || empty($_POST['note']) )
{
if (empty($_POST['nome_ric']))
{
$_SESSION['messaggio_mail1'] = '<div id="mess_form" class="errore">Manca:il tuo Nome</div>';
}
if (empty($_POST['cognome_ric']))
{
$_SESSION['messaggio_mail2'] = '<div id="mess_form" class="errore">Manca:il tuo Cognome</div>';
}
if (empty($_POST['email']))
{
$_SESSION['messaggio_mail3'] = '<div id="mess_form" class="errore">Manca:la tua email</div>';
}
if (empty($_POST['note']))
{
$_SESSION['messaggio_mail4'] = '<div id="mess_form" class="errore">Manca:il testo del messaggio</div>';
}
if (empty($_POST['cnt']))
{
$_SESSION['messaggio_mail5'] = '<div id="mess_form" class="errore">Manca:il testo di controllo</div>';
}
if ($_POST['privacy'] == 'non_accetto')
{
$_SESSION['messaggio_mail6'] = '<div id="mess_form" class="errore">Manca:il consenso per la Privacy.</div>';
}
if(isset($_SERVER['HTTP_REFERER']))
{
header ('Location:' . "{$_SERVER['HTTP_REFERER']}");
return;
}
}
else
{
// Serve per mettere trim() ad ogni valore passato dalla form! Urgleeeeee!!!
foreach ($_POST as $Chiave => $Valore)
{
$_POST[$Chiave] = trim($Valore);
}
// data completa dell'invio del messaggio...
$timestamp = time();
$sql = "INSERT into {$tab_richieste} SET
nome_ric ='{$_POST['nome_ric']}',
cognome_ric ='{$_POST['cognome_ric']}',
email ='{$_POST['email']}',
note ='{$_POST['note']}',
data_ric ='{$timestamp}'
";
$result = mysql_query($sql, $connessione) or die("Error #" . mysql_errno() . ":" . mysql_error());
$msg = "Salve, questo messaggio è generato in automatico.\n\n";
$msg .= "Richiesta da {$_POST['nome_ric']}\n\n";
$msg .= "---------- inizio informazioni personali ------------\n\n";
$msg .= "Nome:\t\t{$_POST['nome_ric']}\n";
$msg .= "Cognome:\t{$_POST['cognome_ric']}\n";
$msg .= "Email:\t\t{$_POST['email']}\n\n";
$msg .= "---------- fine informazioni personali ------------\n\n";
$msg .= "---------- inizio nota ------------\n\n";
$msg .= "{$_POST['note']}\n\n";
$msg .= "---------- fine nota --------------\n\n";
$msg .= "Appena possibile ti contatteremo o evaderemo la tua richiesta.\n";
$msg .= "A presto!\n";
$msg .= "$nome_cliente\n";
// levo gli slash...
$msg = stripslashes($msg);
/* fine dati che mi servono nelle form */
// includo la classe di PHPmailer...
include('phpmailer23/class.phpmailer.php');
// inizalizzo la classe...
$mail = new PHPMailer();
// imposto il metodo per inviare la mail, uso SMTP, sendmail non funziona...
$mail->isSMTP(true);
$mail->Mailer = "smtp";
$mail->Host ="smtp.miodominio.it"; // non uso l'autenticazione via SMTP
// imposto da "chi" parte la mail
$mail->From = "noreply@$nome_cliente";
// imposto un nome per l'invio... altrimenti leggerò Root User
$mail->FromName = "noreply@$nome_cliente";
// imposto il mittente della mail
$mail->AddAddress("{$_POST['email']}");
// metto anche il sender per evitare eventuali blocchi spam...
$mail->Sender = "noreply@$nome_cliente";
// non voglio email con HTML
$mail->IsHTML(false);
// inserisco il Subject
$mail->Subject = "Richiesta da {$_POST['nome_ric']}";
// compongo il testo della mail...
$mail->Body = "$msg";
if(!$mail->Send())
{
echo "Message could not be sent.
"; // lo usiamo per il debug
echo "Mailer Error: " . $mail->ErrorInfo; // come sopra...
exit;
}
// modo veloce per avere il BCC
// inizalizzo la classe...
$mail = new PHPMailer();
// imposto il metodo per inviare la mail, uso SMTP, sendmail non funziona...
$mail->isSMTP(true);
$mail->Mailer = "smtp";
$mail->Host ="smtp.miodominio.it"; // non uso l'autenticazione via SMTP
// imposto da "chi" parte la mail
$mail->From = "noreply@$nome_cliente";
// imposto un nome per l'invio... altrimenti leggerò Root User
$mail->FromName = "noreply@$nome_cliente";
// imposto il mittente della mail
$mail->AddAddress("$mail_resp_tec"); // modo ambigui per avere il BCC
// metto anche il sender per evitare eventuali blocchi spam...
$mail->Sender = "noreply@$nome_cliente";
$mail->IsHTML(false);
// inserisco il Subject
$mail->Subject = "Richiesta da {$_POST['nome_ric']}";
// compongo il testo della mail...
$mail->Body = "$msg";
if(!$mail->Send())
{
echo "Message could not be sent.
"; // lo usiamo per il debug
echo "Mailer Error: " . $mail->ErrorInfo; // come sopra...
exit;
}
//se è andato tutto a buon fine mostro un messaggio di conferma e faccio il redirect alla pagina di contatto
$_SESSION['messaggio_mail'] = "<div id=\"mess_modifica\" class=\"successo\">Grazie per averci contattato.
A breve riceverai copia della tua richiesta, all'indirizzo e-mail che hai indicato nel modulo.
</div>";
header ('Location:' . $_SERVER['HTTP_REFERER']);
return;
}
}
else
{
$_SESSION['messaggio_mail'] = "<div id=\"mess_modifica\" class=\"errore\">Controlla i dati inseriti.</div>";
if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != '')
{
header ('Location:' . $_SERVER['HTTP_REFERER']);
}
else
{
header ('Location:' . 'contattaci.php');
}
}
ob_end_flush();
?>
Non sono riuscito a trovare informazioni per far funzionare correttamente AddReplyTo e AddBCC, se qualcuno sa come fare sarebbe interessante da aggiungere.
A presto!