Envoit d'e-mail vide avec php
Résolu
stevie21
-
stevie21 -
stevie21 -
Bonjour,
je veux offrir la possibilité au usagé de mon site de récupérer leur mot de passe via leur e-mail lorsque ceux-ci l'on oublié.
En inscrivant leur pseudo et leur adresse e-mail, je fais une requête dans ma BD et j'obtiens le mot de passe et je l'envoi sur leur courriel.
Je suis en mesure de bien récupérer le mot de passe et d'envoyer le courriel. Cependant, le e-mail est vide. Je suis en mesure d'insérer le mot de passe dans l'objet du courriel, mais je ne suis pas en mesure d'insérer quoi que ce soit dans le contenu du courriel, quoi que je fasse, il est vide.
donc voici mon code:
$email_expediteur='mon.adresse@email.com';
$email_reply='mon.adresse@email.com';
$message_texte='Bonjour,'."\n\n".'Voici votre mot de passe demandé';
$message_html='<html>
<head>
<title>Titre</title>
</head>
<body>Mot de passe oublié</body>
</html>';
//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//-----------------------------------------------
$frontiere = '-----=' . md5(uniqid(mt_rand()));
//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------
$headers = 'From: "Admin" <'.$email_expediteur.'>'."\n";
$headers .= 'Return-Path: <'.$email_reply.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"';
//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$message = 'This is a multi-part message in MIME format.'."\n\n";
$message .= '--'.$frontiere.'--'."\n";
$message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_texte."\n\n" . $mdp;
//-----------------------------------------------
//MESSAGE HTML
//-----------------------------------------------
$message .= '--'.$frontiere.'--'."\n";
$message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_html."\n\n";
$message .= '--'.$frontiere.'--'."\n" .$mdp;
$sujet = 'Votre mot de passe est : ' . $mdp;
if(mail($email_destinataire, $sujet, $message, $headers))
{
echo 'Le courriel a été envoyé avec votre mot de passe ';
}
else
{
echo 'Le courriel n\'a pu être envoyé, veuillez réessayer plus tard.';
}
je vous remercie de votre réponse
je veux offrir la possibilité au usagé de mon site de récupérer leur mot de passe via leur e-mail lorsque ceux-ci l'on oublié.
En inscrivant leur pseudo et leur adresse e-mail, je fais une requête dans ma BD et j'obtiens le mot de passe et je l'envoi sur leur courriel.
Je suis en mesure de bien récupérer le mot de passe et d'envoyer le courriel. Cependant, le e-mail est vide. Je suis en mesure d'insérer le mot de passe dans l'objet du courriel, mais je ne suis pas en mesure d'insérer quoi que ce soit dans le contenu du courriel, quoi que je fasse, il est vide.
donc voici mon code:
$email_expediteur='mon.adresse@email.com';
$email_reply='mon.adresse@email.com';
$message_texte='Bonjour,'."\n\n".'Voici votre mot de passe demandé';
$message_html='<html>
<head>
<title>Titre</title>
</head>
<body>Mot de passe oublié</body>
</html>';
//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//-----------------------------------------------
$frontiere = '-----=' . md5(uniqid(mt_rand()));
//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------
$headers = 'From: "Admin" <'.$email_expediteur.'>'."\n";
$headers .= 'Return-Path: <'.$email_reply.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"';
//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$message = 'This is a multi-part message in MIME format.'."\n\n";
$message .= '--'.$frontiere.'--'."\n";
$message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_texte."\n\n" . $mdp;
//-----------------------------------------------
//MESSAGE HTML
//-----------------------------------------------
$message .= '--'.$frontiere.'--'."\n";
$message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_html."\n\n";
$message .= '--'.$frontiere.'--'."\n" .$mdp;
$sujet = 'Votre mot de passe est : ' . $mdp;
if(mail($email_destinataire, $sujet, $message, $headers))
{
echo 'Le courriel a été envoyé avec votre mot de passe ';
}
else
{
echo 'Le courriel n\'a pu être envoyé, veuillez réessayer plus tard.';
}
je vous remercie de votre réponse
A voir également:
- Envoit d'e-mail vide avec php
- Supprimer page word vide - Guide
- É majuscule - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Mail delivery system - Forum Réseaux sociaux
2 réponses
bonjour,
tu ferme la boundary au lieu de l'ouvrir avant le message
pour Content-Transfer-Encoding met plutôt quoted-printable et tu ecris le mot de passe après la fermeture du message !
as tu vraiment compris le principe des boundary?
voilà ton code il devrait marcher, je ne l'ai pas testé...
pour la boundary pour un mail sans pièce jointe; tu la déclare dans le header
ensuite à la fin du header et avant la déclaration de message tu en ouvre une en mettant -- suivie de la boundary
et tu ouvres pour chaques séparations que tu as a faire
tu ne ferme qu'a la fin pour indiqué la fin de message
--boundary //ouverture
declaration message texte
message texte
--boundary //ouverture
déclaration message html
message html
--boundary-- //fermeture
tu ferme la boundary au lieu de l'ouvrir avant le message
pour Content-Transfer-Encoding met plutôt quoted-printable et tu ecris le mot de passe après la fermeture du message !
as tu vraiment compris le principe des boundary?
<?php $email_expediteur='mon.adresse@email.com'; $email_reply='mon.adresse@email.com'; $message_texte='Bonjour,'."\n\n".'Voici votre mot de passe demandé'; $message_html='<html> <head> <title>Titre</title> </head> <body>Mot de passe oublié '.$mdp.'</body> </html>'; //----------------------------------------------- //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML //----------------------------------------------- $frontiere = '-----=' . md5(uniqid(mt_rand())); //----------------------------------------------- //HEADERS DU MAIL //----------------------------------------------- $headers = 'From: "Admin" <'.$email_expediteur.'>'."\n"; $headers .= 'Return-Path: <'.$email_reply.'>'."\n"; $headers .= 'MIME-Version: 1.0'."\n"; $headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'; //----------------------------------------------- //MESSAGE TEXTE //----------------------------------------------- $message .= '--'.$frontiere.'\n'; $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n"; $message .= 'Content-Transfer-Encoding: quoted-printable'."\n\n"; $message .= $message_texte."\n\n" . $mdp; //----------------------------------------------- //MESSAGE HTML //----------------------------------------------- $message .= '--'.$frontiere.'\n"'; $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; $message .= 'Content-Transfer-Encoding: quoted-printable'."\n\n"; $message .= $message_html."\n\n"; $message .= '--'.$frontiere.'--'."\n"; $sujet = 'Votre mot de passe est : ' . $mdp; if(mail($email_destinataire, $sujet, $message, $headers)) echo 'Le courriel a été envoyé avec votre mot de passe '; else echo 'Le courriel n\'a pu être envoyé, veuillez réessayer plus tard.'; ?>
voilà ton code il devrait marcher, je ne l'ai pas testé...
pour la boundary pour un mail sans pièce jointe; tu la déclare dans le header
ensuite à la fin du header et avant la déclaration de message tu en ouvre une en mettant -- suivie de la boundary
et tu ouvres pour chaques séparations que tu as a faire
tu ne ferme qu'a la fin pour indiqué la fin de message
--boundary //ouverture
declaration message texte
message texte
--boundary //ouverture
déclaration message html
message html
--boundary-- //fermeture