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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.