Salut les amis dev.

J'ai deja termine l'implementation des fonctionnalites que j'ai voulu mettre dans la toute premiere version de mon site, je revise mon code afin de le debarbouiller un peu, et voila, je rencontre un petit probleme avec l'envoie de mes mails.

Voici le code d'envoie de mon mail:

        //Link for validation token
        $link = "http://localhost/nehmi/index.php?page=confirm&id_user=$id_user&validate_token=$validate_token";
        //=====Création du header de l'e-mail

        //=====The message in plain text(en format text)
        $text_message = "Hi ucfirst($username)\n\nWe want to inform you that your Nehmi account has been created successfully. 
        Thank you for choosing our social network service, and wish very much that your Nehmi adventure will be pleasant.\n
        Before you can use your account, we ask you to want to validate it by clicking on this link:\n
        $link\n\nPlease do not respond to this message.\nHave a good day\nValidation link: $link";

        //==The message in html format
        $html_message = "<html><head></head><body>Hi <b>$username</b>\n\nWe want to inform you that your <b>Nehmi</b> account has been created successfully. 
        Thank you for choosing our social network service, and wish very much that your <b>Nehmi</b> adventure will be pleasant.\n
        Before you can use your account, we ask you to want to validate it by clicking on this link:\n
        $link\n\n<b>Please do not respond to this message.</b>\nHave a good day\n<b>Validation link</b>: $link</body></html>";

        //====The subject
        $subject = "Confirm your account";

        //===Delimitor, boundary
        $boundary = "------=" . md5(rand());

        //===The header
        $header = "From: \"Nehmi\"<nehmi@contact.fr>\n";

        $header .= "Reply-to: \"Nehmi\" <nehmi@contact.fr>\n";

        $header .= "MIME-Version: 1.0\n";

        $header .= "Content-Type: multipart/alternative;\nboundary=\"$boundary\"\n";

        //===Compile the message
        $message = "\n--$boundary\n";
        $message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
        $message .= "Content-Transfer-Encoding: 8bit\n";
        $message .= "\n$text_message\n";

        $message = "\n--$boundary\n";
        $message .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
        $message .= "Content-Transfer-Encoding: 8bit\n";
        $message .= "\n$html_message\n";

        $message .= "\n--$boundary--\n";
        $message .= "\n--$boundary--\n";

        //Send the message
        mail($email, $subject, $message, $header);

Mon probleme: Lorsque je passe a la fonction mail le dernier parmetre(Le header), je recois au sein de maildev un message vide, et lorsque je l'enleve, je recois le message certe, mais au sein du message s'affiche la valeur du Boundary alors que ce dernier devrait etre cache a celui qui recoit le message, et dans les deux cas, lorsque je passe au mode Source de maildev, je vois le message avec toutes ces informations(en-tete, contenue, etc..).

Est-ce normal ce comportement de maildev, ou un probleme au niveau de mon code?

Merci.

2 réponses


Bonjour.
Je crois bien que tu confonds tout.
Qu'un contenu ne s'affiche pas dans un email, ne veut pas dire qu'il n'est pas possible pour l'utilisateur de le voir et il est tout à fait possible d'accéder aux informations dont tu parles, que ce soit via maildev ou tout autre client mail ou application.
Si par exemple tu regardes sur Gmail, lorsque tu consultes un email, à coté de la date de réception, tu as un menu dropdown et tu cliques sur Afficher l'original et tu verras toutes les informations concernant l'email, le client/logiciel utilisé pour l'envoi, les adresses IP et tout le reste.
Toutes ces informations ne sont pas affichées dans l'email à proprement parlé, mais elles sont consultables.

Ok,...Mais le probleme, au sein de mail dev, je n'arrive pas a voir le mail en mode plain/text lorsque je passe a la fonction mail les headers....Ce probleme est du a quoi?