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:
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.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); ?>
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.
posso fare la stessa cosa e crearmi una funzione con PHPMAILER?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; } } }
non so come fare... qualcuno mi da una dritta?

Rispondi quotando