Bonjour à tous !
Voilà maintenant plusieurs heures que je galère sur ce truc.
Je travaille sur un projet dans le quel les utilisateurs peuvent remplir un formulaire d'ajout de document.
Il m'a été demandé de faire en sorte qu'à l'ajout ou à la modification d'un document, un mail soit envoyé aux administrateurs. Pour faire les choses bien, je veux mettre dans ce mail l'url permettant d'accéder directement au document en question. Je voudrais donc que mon url soit du type http://mondomaine.com/monScript.php?id=4
J'ai tout essayé et je bloque. D'abord, j'ai mis la balise HTML <a>. Mais lorsque je fais ça, allez savoir pourquoi, mon lien ne commence pas par http:// mais par ttp://. Je perds la lettre h. Je me suis aussi rendu compte que je perdais aussi la dernière lettre de mon URL.
J'ai donc essayé de ne pas mettre de html et de mettre directement l'url, les clients mails interprétant le plus souvent le lien, mais alors la, je perds le caractère = dans l'URL et je me retrouve avec http://mondomaine.com/monScript.php?id4. Donc forcément ça marche pas.
J'ai pu alors voir qu'il y avait des caractères interdit. Je passe donc par le code ASCII et transforme ainsi mon URL en http://mondomaine.com/monScript.php?id%3D4.
Mon souci maintenant, c'est que les clients mails n'interprètent plus l'URL comme une URL, et vu les flèches a qui vont s'adresser mon formulaire, s'ils doivent faire autre chose que cliquer sur le lien, c'est foutu, donc pas de copier coller.
Voici donc la fonction mail que j'utilise et plus bas, vous verrez mon appel à la fonction. Si vous avez une idée, je suis preneur.
Et donc mon appel :
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
44
45
46
47
48 function send_email($delivery, $subject,$HTMLcontent,$simpletext) { $email_sender='noreply@domaine.com'; $email_reply='mmaguire@domaine.com'; $message_html='<html> <head> </head> <body> <div id="texto_header">'.$subject.'</div> <div>'.$HTMLcontent.'</div> </body> </html>'; //----------------------------------------------- //HEADERS DU MAIL //----------------------------------------------- $boundary = "-----=" . md5( uniqid ( rand() ) ); $headers = "Reply-to: \"Engender Administrator\" <".$email_sender.">\n"; $headers .= "From: \"Engender Administrator\"<".$email_reply.">\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\""; $message = "This is a multi-part message in MIME format.\n\n"; $message .= "--" . $boundary . "\n"; $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; $message .= "Content-Transfer-Encoding: quoted-printable\n\n"; $message .= $simpletext; $message .= "\n\n"; $message .= "--" . $boundary . "\n"; $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; $message .= "Content-Transfer-Encoding: quoted-printable\n\n"; $message .= $message_html; $message .= "\n\n"; $message .= "--" . $boundary . "--\n"; //----------------------------------------------- //MESSAGE HTML //----------------------------------------------- if(mail($delivery ,$subject,$message,$headers)) { return "Auto sending mail success"; } else { return "Auto sending mail fail"; } }
Vous l'aurez compris, $url contient mon url que je construit juste avant à l'aide de la variable $_SERVER et de l'ID du document qui vient d'être ajouté/modifié. Le problème ne vient pas de la construction de cette URL, car pour les tests, je fais un echo de l'URL juste avant et elle est nickel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $HTMLcontent='A form has just been added by '.ucfirst($_SESSION['login']).'<br>You can check it by follow this <a href="'.$url.'">link</a>'; $text='A form has just been added by '.ucfirst($_SESSION['login']).'\nYou can check it here : '.$url.'(copy and past in your web browser)'; $users = query_mysql("select * from users where type=3"); for ($i=0; $i<count($users); $i++) { $result = send_email($users[$i]['email'],"A form has been $mail",$HTMLcontent,$text); }
Merci d'avance de votre réponse
Partager