Ciao a tutti, sto pensando di usare la classe PHPMailer per inviare le email dal sito, ma ho qualche dubbio sul come farlo.
un codice puramente di esempio per PhpMailer sarebbe questo:
codice:
<?
require "phpmailer/class.phpmailer.php";
$messaggio = new PHPmailer();
$messaggio->IsSMTP();
$messaggio->Host='Host SMTP';
$messaggio->From='info@mittente.it';
$messaggio->AddAddress('info@destinatario.it');
$messaggio->AddReplyTo('info@mittente.it');
$messaggio->Subject='Email con allegato';
$messaggio->Body='Invio file Pdf';
//percorso all'allegato
$messaggio->AddAttachment('pdf/file.pdf');
if(!$messaggio->Send()){
echo $messaggio->ErrorInfo;
}else{
echo 'Email inviata correttamente!';
}
$messaggio->SmtpClose();
unset($messaggio);
?>
per usarlo, si potrebbe fare una pagina dedicata invioemail.php, a cui di volta in volta quando serve si inviano i dati e si fa spedire l'email, il tutto volendo si potrebbe fare con un chiamata ajax, facendosi tornare il risultato dell'invio.
ma... ad esempio.. io ho un form di registrazione, che al suo completamente fa una chiamata ajax a una pagina che fa gli insert su db.. e al suo interno, se tutto va bene, invia l'email di avvenuta registrazione.
in questo caso come potrei gestire la cosa?
io prima usavo la funzione mail(), e mi ero creato una mia funzione invioemail() all'interno di una mia classe.. che appunto richiamavo all'occorrenza.
codice:
class panda extends mysqli
{
public function my_invioemail($arraybbc,$to,$fromtext,$fromemail,$oggetto,$testomessaggio,$allegato,$typeallegato,$pathallegato)
{
global $_LANG;
// costruiamo alcune intestazioni generali
$header = "From: ".$fromtext." <".$fromemail.">\n";
// generiamo la stringa che funge da separatore
$boundary = "==String_Boundary_x" .md5(time()). "x";
// costruiamo le intestazioni specifiche per un messaggio
// con parti relazionate
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/related;\n";
$header .= " boundary=\"$boundary\";\n\n";
// questa parte del messaggio viene visualizzata
// solo se il programma non sa interpretare
// i MIME poiché è posta prima della stringa boundary
$messaggio = $_LANG['email_nomime']."\n\n";
// costruiamo la sezione in formato html
$messaggio .= "--$boundary\n";
$messaggio .= "Content-Type: text/html; charset=\"UTF-8\"\n";
$messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
$messaggio .= "<html>
<body>
";
$messaggio .= $testomessaggio;
$messaggio .= "</body>
</html>\n\n";
if(is_file($pathallegato."/".$allegato))
{
// Aggiungo l'allegato al messaggio
$messaggio .= "--$boundary\n";
$messaggio .= "Content-Type: ".$typeallegato.";";
$messaggio .= " name=\"".$allegato."\"\n";
$messaggio .= "Content-Transfer-Encoding: base64\n";
$messaggio .= "Content-Disposition: attachment;";
$messaggio .= " filename=\"".$allegato."\"\n\n";
// leggiamo il file corrispondente all'immagine dal nostro server
// Apro e leggo il file allegato
$fileallegato = $pathallegato."/".$allegato;
$file = fopen($fileallegato,'rb');
$data = fread($file, filesize($fileallegato));
fclose($file);
// Adatto il file al formato MIME base64 usando base64_encode
$data = chunk_split(base64_encode($data));
$messaggio .= $data . "\n";
}
// chiusura del messaggio con la stringa boundary
$messaggio .= "--$boundary--";
if( @mail($to, $oggetto, $messaggio, $header) )
{
return true;
} else {
return false;
}
}
}
posso fare la stessa cosa e crearmi una funzione con PHPMAILER?
non so come fare... qualcuno mi da una dritta?