diff --git a/adminstuds.php b/adminstuds.php index 2a85c39..bd7adce 100644 --- a/adminstuds.php +++ b/adminstuds.php @@ -103,13 +103,6 @@ $dsondage=$sondage->FetchObject(false); //si la valeur du nouveau titre est valide et que le bouton est activé $adresseadmin = $dsondage->mail_admin; -$headers_str = << -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit -EOF; -$headers = sprintf($headers_str, NOMAPPLICATION, ADRESSEMAILADMIN); - if (isset($_POST["boutonnouveautitre"]) || isset($_POST["boutonnouveautitre_x"])) { if(issetAndNoEmpty('nouveautitre') === false) { @@ -122,12 +115,11 @@ if (isset($_POST["boutonnouveautitre"]) || isset($_POST["boutonnouveautitre_x"]) //envoi du mail pour prevenir l'admin de sondage if ($connect->Execute($sql, array($nouveautitre, $numsondage))) { - mail ($adresseadmin, + sendEmail( $adresseadmin, _("[ADMINISTRATOR] New title for your poll") . ' ' . NOMAPPLICATION, _("You have changed the title of your poll. \nYou can modify this poll with this link") . " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" . - _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, - $headers); + _("Thanks for your confidence.") . "\n" . NOMAPPLICATION ); } } } @@ -145,12 +137,11 @@ if (isset($_POST["boutonnouveauxcommentaires"]) || isset($_POST["boutonnouveauxc if ($connect->Execute($sql, array($commentaires, $numsondage))) { //envoi du mail pour prevenir l'admin de sondage - mail ($adresseadmin, + sendEmail( $adresseadmin, _("[ADMINISTRATOR] New comments for your poll") . ' ' . NOMAPPLICATION, _("You have changed the comments of your poll. \nYou can modify this poll with this link") . " :\n\n".getUrlSondage($numsondageadmin, true)." \n\n" . - _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, - $headers); + _("Thanks for your confidence.") . "\n" . NOMAPPLICATION ); } } } @@ -168,12 +159,11 @@ if (isset($_POST["boutonnouvelleadresse"]) || isset($_POST["boutonnouvelleadress if ($connect->Execute($sql, array($nouvelleadresse, $numsondage))) { //envoi du mail pour prevenir l'admin de sondage - mail ($_POST['nouvelleadresse'], + sendEmail( $_POST['nouvelleadresse'], _("[ADMINISTRATOR] New email address for your poll") . ' ' . NOMAPPLICATION, _("You have changed your email address in your poll. \nYou can modify this poll with this link") . " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" . - _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, - $headers); + _("Thanks for your confidence.") . "\n" . NOMAPPLICATION ); } } } @@ -318,12 +308,11 @@ if (isset($_POST["confirmesuppression"]) || isset($_POST["confirmesuppression_x" error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, 'admin/logs_studs.txt'); //envoi du mail a l'administrateur du sondage - mail ($adresseadmin, + sendEmail( $adresseadmin, _("[ADMINISTRATOR] Removing of your poll") . ' ' . NOMAPPLICATION, _("You have removed your poll. \nYou can make new polls with this link") . " :\n\n".get_server_name()."index.php \n\n" . - _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, - $headers); + _("Thanks for your confidence.") . "\n" . NOMAPPLICATION ); //affichage de l'ecran de confirmation de suppression de sondage print_header(); @@ -466,11 +455,10 @@ if (isset($_POST["ajoutercolonne_x"]) && issetAndNoEmpty('nouvellecolonne') && ( $sql = $connect->Prepare($sql); if ($connect->Execute($sql, array($nouveauxsujets, $numsondage))) { //envoi d'un mail pour prévenir l'administrateur du changement - $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit"; - mail ("$adresseadmin", "" . _("[ADMINISTRATOR] New column for your poll").NOMAPPLICATION, "" . + + sendEmail( "$adresseadmin", "" . _("[ADMINISTRATOR] New column for your poll").NOMAPPLICATION, "" . _("You have added a new column in your poll. \nYou can inform the voters of this change with this link") . - " : \n\n".getUrlSondage($numsondage)." \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION, - $headers); + " : \n\n".getUrlSondage($numsondage)." \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION ); } } @@ -581,11 +569,10 @@ if (isset($_POST["ajoutercolonne_x"]) && ($dsondage->format == "D" || $dsondage- //envoi d'un mail pour prévenir l'administrateur du changement $adresseadmin = $dsondage->mail_admin; - mail ($adresseadmin, + sendEmail( $adresseadmin, _("[ADMINISTRATOR] New column for your poll"), _("You have added a new column in your poll. \nYou can inform the voters of this change with this link"). - " : \n\n".getUrlSondage($numsondage)." \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION, - $headers); + " : \n\n".getUrlSondage($numsondage)." \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION ); } else { $erreur_ajout_date="yes"; } diff --git a/contacts.php b/contacts.php index 0e4b306..d1d72c4 100644 --- a/contacts.php +++ b/contacts.php @@ -52,14 +52,16 @@ if ((isset($_POST['envoiquestion']) || isset($_POST['envoiquestion_x'])) && isse $message=str_replace("\\","",$_POST["question"]); //envoi des mails - $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\r\nContent-Transfer-Encoding: 8bit"; + if (isset($_POST['adresse_mail']) && !empty($_POST['adresse_mail']) && validateEmail($_POST['adresse_mail'])) { - $headers .= "\r\n".'Reply-To: '.$_POST['adresse_mail']; + $headers = 'Reply-To: '.$_POST['adresse_mail']; + } else { + $headers = '' ; } - mail (ADRESSEMAILADMIN, "" . _("[CONTACT] You have sent a question ") . "".NOMAPPLICATION, "" . _("You have a question from a user ") . " ".NOMAPPLICATION."\n\n" . _("User") . " : ".$_POST["nom"]."\n\n" . _("User's email address") . " : $_POST[adresse_mail]\n\n" . _("Message") . " :".$message,$headers); + + sendEmail( ADRESSEMAILADMIN, "" . _("[CONTACT] You have sent a question ") . "".NOMAPPLICATION, "" . _("You have a question from a user ") . " ".NOMAPPLICATION."\n\n" . _("User") . " : ".$_POST["nom"]."\n\n" . _("User's email address") . " : $_POST[adresse_mail]\n\n" . _("Message") . " :".$message,$headers ); if (isset($_POST['adresse_mail']) && !empty($_POST['adresse_mail']) && validateEmail($_POST['adresse_mail'])) { - $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit"; - mail ("$_POST[adresse_mail]", "" . _("[COPY] Someone has sent a question ") . "".NOMAPPLICATION, "" . _("Here is a copy of your question") . " :\n\n".$message." \n\n" . _("We're going to answer your question shortly.") . "\n\n" . _("Thanks for your confidence.") . "\n".NOMAPPLICATION,$headers); + sendEmail( "$_POST[adresse_mail]", "" . _("[COPY] Someone has sent a question ") . "".NOMAPPLICATION, "" . _("Here is a copy of your question") . " :\n\n".$message." \n\n" . _("We're going to answer your question shortly.") . "\n\n" . _("Thanks for your confidence.") . "\n".NOMAPPLICATION ); } //affichage de la page de confirmation d'envoi @@ -148,4 +150,4 @@ framanav(); bandeau_pied(); echo ''."\n"; echo ''."\n"; -} \ No newline at end of file +} diff --git a/creation_sondage.php b/creation_sondage.php index 641ffae..f0e2d40 100644 --- a/creation_sondage.php +++ b/creation_sondage.php @@ -82,8 +82,6 @@ function ajouter_sondage() $date_fin = time()+15552000; } - $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit"; - global $connect; $sql = 'INSERT INTO sondage @@ -108,7 +106,7 @@ function ajouter_sondage() $message = _("This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll."); $message .= "\n\n"; - $message .= stripslashes(htmlspecialchars_decode($_SESSION["nom"],ENT_QUOTES))." " . _("hast just created a poll called") . " : \"".stripslashes(htmlspecialchars_decode($_SESSION["titre"],ENT_QUOTES))."\".\n"; + $message .= stripslashes(html_entity_decode($_SESSION["nom"],ENT_QUOTES,"UTF-8"))." " . _("hast just created a poll called") . " : \"".stripslashes(htmlspecialchars_decode($_SESSION["titre"],ENT_QUOTES))."\".\n"; $message .= _("Thanks for filling the poll at the link above") . " :\n\n%s\n\n" . _("Thanks for your confidence") . ",\n".NOMAPPLICATION; $message_admin = _("This message should NOT be sended to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above"); @@ -118,8 +116,8 @@ function ajouter_sondage() $message_admin = sprintf($message_admin, getUrlSondage($sondage_admin, true)); if (validateEmail($_SESSION['adresse'])) { - mail ("$_SESSION[adresse]", "[".NOMAPPLICATION."][" . _("Author's message") . "] " . _("Poll") . " : ".stripslashes(htmlspecialchars_decode($_SESSION["titre"],ENT_QUOTES)), $message_admin, $headers); - mail ("$_SESSION[adresse]", "[".NOMAPPLICATION."][" . _("For sending to the polled users") . "] " . _("Poll") . " : ".stripslashes(htmlspecialchars_decode($_SESSION["titre"],ENT_QUOTES)), $message, $headers); + sendEmail( "$_SESSION[adresse]", "[".NOMAPPLICATION."][" . _("Author's message") . "] " . _("Poll") . " : ".stripslashes(htmlspecialchars_decode($_SESSION["titre"],ENT_QUOTES)), $message_admin ); + sendEmail( "$_SESSION[adresse]", "[".NOMAPPLICATION."][" . _("For sending to the polled users") . "] " . _("Poll") . " : ".stripslashes(htmlspecialchars_decode($_SESSION["titre"],ENT_QUOTES)), $message ); } $date=date('H:i:s d/m/Y:'); @@ -127,4 +125,4 @@ function ajouter_sondage() header("Location:".getUrlSondage($sondage)); exit(); session_unset(); -} \ No newline at end of file +} diff --git a/fonctions.php b/fonctions.php index 2e77b86..0088e00 100644 --- a/fonctions.php +++ b/fonctions.php @@ -161,6 +161,39 @@ function validateEmail($email) return (bool)preg_match($pattern, $email); } +# Envoi un courrier avec un codage correct de To et Subject +# Les en-têtes complémentaires ne sont pas gérés + +function sendEmail( $to, $subject, $body, $headers, $param) +{ + + mb_internal_encoding("UTF-8"); + + $subject = mb_encode_mimeheader( html_entity_decode( $subject, ENT_QUOTES, 'UTF-8' ), "UTF-8", "B", "\n", 9 ) ; + + $encoded_app = mb_encode_mimeheader( NOMAPPLICATION, "UTF-8", "B", "\n", 6 ) ; + $size_encoded_app = ( 6 + strlen( $encoded_app ) ) % 75 ; + $size_admin_email = strlen( ADRESSEMAILADMIN ) ; + + if ( ( $size_encoded_app + $size_admin_email + 9 ) > 74 ) { + $folding = "\n" ; + } else { + $folding = "" ; + } ; + $from = sprintf( "From: %s%s <%s>\n", $encoded_app, $folding, ADRESSEMAILADMIN ) ; + + if ( $headers ) $headers .= "\n" ; + $headers .= $from ; + $headers .= "MIME-Version: 1.0\n" ; + $headers .= "Content-Type: text/plain; charset=UTF-8\n" ; + $headers .= "Content-Transfer-Encoding: 8bit" ; + + $body = html_entity_decode( $body, ENT_QUOTES, 'UTF-8' ) ; + + mail( $to, $subject, $body, $headers, $param ) ; + +} + /** * Fonction vérifiant l'existance et la valeur non vide d'une clé d'un tableau diff --git a/studs.php b/studs.php index f113838..fd89460 100644 --- a/studs.php +++ b/studs.php @@ -171,14 +171,12 @@ if (!is_error(NO_POLL) && (isset($_POST["boutonp"]) || isset($_POST["boutonp_x"] $connect->Execute($sql, array($nom, $numsondage, $nouveauchoix)); if ($dsondage->mailsonde || /* compatibility for non boolean DB */ $dsondage->mailsonde=="yes" || $dsondage->mailsonde=="true") { - $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit"; - mail ("$dsondage->mail_admin", + sendEmail( "$dsondage->mail_admin", "[".NOMAPPLICATION."] "._("Poll's participation")." : ".html_entity_decode($dsondage->titre, ENT_QUOTES, 'UTF-8')."", html_entity_decode("\"$nom\" ", ENT_QUOTES, 'UTF-8'). _("has filled a line.\nYou can find your poll at the link") . " :\n\n". getUrlSondage($numsondage)." \n\n" . - _("Thanks for your confidence.") . "\n". NOMAPPLICATION, - $headers); + _("Thanks for your confidence.") . "\n". NOMAPPLICATION ); } } } else { @@ -307,8 +305,7 @@ if ($testmodifier) { $connect->Execute($sql, array($nouveauchoix, $data->nom, $data->id_users)); if ($dsondage->mailsonde=="yes") { - $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit"; - mail ("$dsondage->mail_admin", "[".NOMAPPLICATION."] " . _("Poll's participation") . " : ".html_entity_decode($dsondage->titre, ENT_QUOTES, 'UTF-8'), "\"".html_entity_decode($data->nom, ENT_QUOTES, 'UTF-8')."\""."" . _("has filled a line.\nYou can find your poll at the link") . " :\n\n".getUrlSondage($numsondage)." \n\n" . _("Thanks for your confidence.") . "\n".NOMAPPLICATION,$headers); + sendEmail( "$dsondage->mail_admin", "[".NOMAPPLICATION."] " . _("Poll's participation") . " : ".html_entity_decode($dsondage->titre, ENT_QUOTES, 'UTF-8'), "\"".html_entity_decode($data->nom, ENT_QUOTES, 'UTF-8')."\""."" . _("has filled a line.\nYou can find your poll at the link") . " :\n\n".getUrlSondage($numsondage)." \n\n" . _("Thanks for your confidence.") . "\n".NOMAPPLICATION ); } }