Ajax.request et PHPMailer
Bonjour,
Une petite question concernant Ajax.request et PHPMailer :
Pour envoyer des mails via un formulaire j'utilise quelquechose du genre :
Côté JS :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
var mForm = $('id-de-mon-formulaire');
var url = 'mon-url/send-mail.php';
var params = "";
params += "mlHost=truc.host.com&mlPort=5025&mlPort=5025&mlHtml=1&mlMaxLength=900";
params += "&mlFrom=truc@truc.col&mlFromName="+mForm['fmNom'].value;
params += "&mlDestination=destinataire@truc.com|destinataire2@truc.com";
params += "&mlMail="+mForm['fmMail'].value+"&mlSociety="+mForm['fmSociety'].value+"&mlName="+mForm['fmNom'].value;
params += "&mlPhone="+mForm['fmTel'].value+"&mlSubject="+mForm['fmSujet'].value+"&mlMessage="+mForm['fmMessage'].value;
var myAjax = new Ajax.Request (
url,
{
method: "post",
evalScripts: false,
parameters : params,
onComplete: function transResult (response) {
if (response.responseText == 'OK') {
// ici jolie message box de confirmation
mForm.reset();
}
else {
// ici vilaine box d'erreur
}
}
}
); |
Et côté PHP:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| require("../_lib/phpmailer/class.phpmailer.php");
if (isset($_POST['mlMail'])) {
$sender = strtolower($_POST['mlMail']);
$senderSociety = $_POST['mlSociety'];
$senderName = ucwords($_POST['mlName']);
$phoneNumber = $_POST['mlPhone'];
$subject = ucfirst($_POST['mlSubject']);
$date = date("d/m/Y");
$hour = date("H")."h".date("i");
$message = $_POST['mlMessage'];
if (strlen($message) >= $_POST['mlMaxLength']) {
echo 'Votre message est trop long !';
exit();
}
$mail = new PHPMailer();
$mail->Host=strtolower($_POST['mlHost']);
$mail->Mailer = "smtp";
$mail->Port = $_POST['mlPort'];
if ($_POST['mlHtml']==1) {
$mail->IsHTML(true);
}
$mail->CharSet="utf-8";
$mail->From=strtolower($_POST['mlFrom']);
$mail->FromName = $_POST['mlFromName'];
$tab_addr = explode("|",$_POST['mlDestination']);
for ($i=0;$i<count($tab_addr);$i++) {
$mail->AddAddress(strtolower($tab_addr[$i]));
}
$mail->AddReplyTo($sender);
$mail->Subject=$subject;
$mail->Body="ici en fait mon joli mail en HTML";
if(!$mail->Send()){ //Teste si le return code est ok.
echo $mail->ErrorInfo;
}
else{
echo 'OK';
}
$mail->SmtpClose();
unset($mail); |
Plus d'autres tests mais sans intérêt ici.
Mon problème est que lorsque dans mon Textarea qui contient le message j'utilise certains caractères comme "?" par exemple, le message ne pars pas.
Quel encodage dois-je utiliser ? et de quel côté ? JS ? Php ?
Merci par avance.
Benjamin.