N'ayant pas hébergé mon agora sur un serveur perso et souhaitant envoyer des mails via le smtp de gmail, j'ai fini par réussir en modifiant le fichier /fonctions/divers.inc.php comme suit :
Perso, j'ai recopier dans le répertoire "fonctions" le fichier class.phpmailer.php (attention, je n'ai testé qu'avec la version pour PHP5.1)
Code : Tout sélectionner
function envoi_mail($destinataires, $sujet_mail, $contenu_mail, $options="")
{
//// INITIALISATION
global $trad, $infos_trad;
if(!isset($options["message_alert"])) $options["message_alert"] = true;
if(!isset($options["header_footer"])) $options["header_footer"] = true;
if(!isset($options["afficher_dest_message"])) $options["afficher_dest_message"] = false;
if(!isset($options["expediteur_noreply"])) $options["expediteur_noreply"] = false;
if(!isset($options["envoi_fichiers"]) || control_upload()==false) $options["envoi_fichiers"] = false;
if(!isset($options["notif"])) $options["notif"] = false;
if(!isset($options["accuse_reception"])) $options["accuse_reception"] = false;
$frontiere = "-----=".uniqid(mt_rand());
if(is_array($destinataires)==false) $destinataires = array($destinataires);
foreach($destinataires as $dest_key => $dest_tmp){
/**/ if(is_numeric($dest_tmp)) { $mail_tmp = user_infos($dest_tmp,"mail"); if($mail_tmp!="") $destinataires[$dest_key] = $mail_tmp; }
/**/}
$destinataires_txt = implode(",", array_unique($destinataires));
$destinataire_php = (count($destinataires)>1) ? "" : $destinataires_txt;
require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
$body = $contenu_mail;
$body = eregi_replace("[\]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->Username = "[identifiant]@gmail.com"; // GMAIL username
$mail->Password = "[mot de passe]"; // GMAIL password
$mail->SetFrom('[mon email]@gmail.com', '[nom d'envoi]');
$mail->AddReplyTo("[mon email]@gmail.com","[nom d'envoi]");
$mail->Subject = "$sujet_mail";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
// La fonction suivant permet l'envoi multiple de message, comme pour les notifications et convertie le tableau d'adresse mail en un envoi par adresse
array_map(array($mail, 'AddAddress'), explode(',', $destinataires_txt));
foreach ($destinataires_txt as $email){
$mail->AddAddress($email);
}
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message envoyé!";
}
}
Donc pour faire court, les variables d'agora sont utilisées ce qui me permet de garder le sujet mais aussi les mails des destinataires, le seul hic c'est qu'on perd les noms des destinataires (par flemme de faire mieux)
Cela dit, pour plus de sécurité je dirais qu'il faudra voir comme piste pour les développeurs d'Agora-Project la possibilité de rentrer les valeurs du serveur et les identifiants mail dans la base de donnée pour plus de sécurité.
Cela dit, beau travail les gars pour ce projet collaboratif !
Germain