IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

URL dans un e-mail


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 17
    Points : 15
    Points
    15
    Par défaut URL dans un e-mail
    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.
    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";
    	} 
    }
    Et donc mon appel :
    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);
    }
    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.

    Merci d'avance de votre réponse

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Le problême vient de l'encodage déclaré "quoted-printable".

    Je plus simple est d'utiliser la base 64...

    Remplaces les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
    $message .= $simpletext;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $message .= "Content-Transfer-Encoding: base64\n\n";
    $message .= chunk_split(base64_encode($simpletext));
    Ainsi que les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
    $message .= $message_html;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $message .= "Content-Transfer-Encoding: base64\n\n";
    $message .=chunk_split(base64_encode($message_html));

Discussions similaires

  1. [Débutant] modifier l'url dans les mails d'alertes (SP2003)
    Par hmoad dans le forum Développement Sharepoint
    Réponses: 0
    Dernier message: 12/06/2012, 13h43
  2. attacher un URL dans System.Net.Mail.Attachment
    Par DeveloppeurWeb dans le forum ASP.NET
    Réponses: 5
    Dernier message: 02/11/2010, 15h06
  3. [RegEx] Empecher les addresses mail et url dans un texarea
    Par yaz1234 dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2008, 17h06
  4. Réponses: 1
    Dernier message: 09/10/2007, 21h53
  5. [jsp][jetty]recuperer l'url dans la barre d'adresse
    Par maxvador dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 07/06/2004, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo