105,7 → 105,7 |
// En-têtes additionnels |
$entetes .= 'From: '.Config::get('adresse_mail_annuaire')."\r\n"; |
|
return mail($adresse_mail,'Inscription à l\'annuaire',$contenu_mail, $entetes); |
return mail($adresse_mail,mb_encode_mimeheader('Inscription à l\'annuaire'),$contenu_mail, $entetes); |
|
} |
|
136,7 → 136,7 |
// En-têtes additionnels |
$entetes .= 'From: '.Config::get('adresse_mail_annuaire')."\r\n"; |
|
return mail($mail,'Demande de réinitialisation de mot de passe',$contenu_mail, $entetes); |
return mail($mail,mb_encode_mimeheader('Demande de réinitialisation de mot de passe'),$contenu_mail, $entetes); |
|
} |
|
143,6 → 143,50 |
|
/** -------------------Fonctions pour la messagerie entre utilisateurs -----------------------*/ |
|
/** Effectue une recherche dans la base de données et envoie un mail à tous les inscrits correspondants, |
* à l'adresse donnée en paramètre |
* @param string $expediteur l'expediteur du message |
* @param mixed $destinataires un string ou un tableau de mails qui contiennent les destinataire |
* @param string $sujet sujet du mail |
* @return boolean true ou false suivant le succès ou non de l'envoi |
*/ |
public function envoyerMailParRequete($id_annuaire, $expediteur, $criteres, $sujet, $message) { |
|
if(isset($criteres['exclusive'])) { |
$exclusive = $criteres['exclusive']; |
} else { |
$exclusive = true; |
} |
|
unset($criteres['page']); |
unset($criteres['taille_page']); |
|
$collecteur = new VerificationControleur(); |
$tableau_valeur_collectees = $collecteur->collecterValeursRechercheMoteur($criteres, $this->obtenirChampsMappageAnnuaire($id_annuaire)); |
|
$valeurs_recherchees = $tableau_valeur_collectees['valeurs_recherchees']; |
$valeurs_mappees = $tableau_valeur_collectees['valeurs_mappees']; |
$valeurs_get = $tableau_valeur_collectees['valeurs_get']; |
|
// on recherche dans les métadonnées |
$this->chargerModele('MetadonneeModele'); |
// le résultat est un ensemble d'identifiants |
$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, $exclusive); |
|
// on recherche les infos dans la table annuaire mappée |
// en incluant ou excluant les id déjà trouvées dans les metadonnées |
// suivant le critères d'exclusivité ou non |
$this->chargerModele('AnnuaireModele'); |
$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive, 0, 0); |
|
$resultat_recherche = $resultat_annuaire_mappe['resultat']; |
$nb_resultats = $resultat_annuaire_mappe['total']; |
|
$destinataires = $this->aplatirTableauSansPreserverCles($resultat_recherche); |
|
return $this->envoyerMailDirectOuModere($id_annuaire, $expediteur, $destinataires, $sujet, $message); |
|
} |
|
/** Envoie un mail avec l'adresse de l'utilisateur donné en paramètre, |
* à l'adresse donnée en paramètre |
153,20 → 197,27 |
*/ |
public function envoyerMail($expediteur, $destinataires, $sujet, $message) { |
|
if(is_array($destinataires)) { |
$destinataires = implode(',',$destinataires); |
if(!is_array($destinataires)) { |
$destinataires = array($destinataires); |
} |
|
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini |
$entetes = 'MIME-Version: 1.0' . "\r\n"; |
$entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n"; |
$entetes .= 'Bcc:'.$destinataires . "\r\n"; |
// En-têtes additionnels |
$entetes .= 'From: '.$expediteur."\r\n"; |
foreach($destinataires as $destinataire) { |
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini |
$entetes = 'MIME-Version: 1.0' . "\r\n"; |
$entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n"; |
//$entetes .= 'To:'.$destinataire . "\r\n"; |
// En-têtes additionnels |
$entetes .= 'From: '.$expediteur."\r\n"; |
|
$contenu_mail = $message; |
|
return mail('', $sujet, $contenu_mail, $entetes); |
$contenu_mail = $this->encoderChainePourEnvoiMail($message); |
$sujet = $this->encoderChainePourEnvoiMail($sujet); |
|
if(!mail($destinataire, mb_encode_mimeheader($sujet), $contenu_mail, $entetes)) { |
return false; |
} |
} |
|
return true; |
} |
|
/** |
193,7 → 244,7 |
$donnees['moderation'] = true; |
|
} else { |
|
|
// sinon, envoi direct |
$this->envoyerMail($expediteur, $destinataires_mail, $sujet, $message); |
|
340,6 → 391,7 |
$donnees['lien_refuser_mail'] = $lien_refuser_mail; |
$donnees['sujet_message'] = $sujet_message_a_moderer; |
$donnees['contenu_message'] = $message_a_moderer; |
|
if(is_array($destinataires)) { |
$destinataires = implode(', ', $destinataires);; |
} |
355,5 → 407,8 |
|
return strip_tags($message); |
} |
|
|
private function encoderChainePourEnvoiMail($chaine) { |
return stripslashes($chaine); |
} |
} |