Bonjour,
Une petite question concernant Ajax.request et PHPMailer :
Pour envoyer des mails via un formulaire j'utilise quelquechose du genre :
Côté JS :
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 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 } } } );
Plus d'autres tests mais sans intérêt ici.
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);
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.
Partager