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 :

envoyer un mail avec texte pre-rempli


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut envoyer un mail avec texte pre-rempli
    Bonjour,

    je voudrais envoyer un mail avec un texte pré-rempli et dans lequel est inclu des echo $_POST qui aura été rempli par l'utilisateur dans un formulaire.

    M'inspirant du tuto ''Envoyer un mail en php'' j'ai construit mon script en fonction de ce que je souhahite faire.

    j'ai donc composé ¨($message_texte) au début de mon script pour le sortir de la boucle if (isset ($_POST sumit)) afin de pouvoir l'afficher sur ma page de formulaire avec un echo

    j'ai quelques points que je ne parviens pas encore à comprendre

    1- j'ai un message qui indique: Undefined variable: message_texte bien que cette variable a été défini.

    2- je ne sais pas ou fermer $boundary dans le script

    3- lorsque que je fais echo $message_texte dans le formulaire, ben , toutes les balises html apparaissent.

    comment palier a ces points?

    merci!


    <
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    ?php
    	if (!isset($_POST['prenom_invite'])) {
    			$prenom_invite = NULL;
    			}
    		if (!isset($_POST['prenom_membre'])) {
    			$prenom_membre = NULL;
    			}
    		$message_texte .= '--'.$boundary."\r\n";
    		$message_texte .= 'Content-type: text/html; charset=utf-8'."\r\n\r\n";
    		$message_texte .= ' <div style="padding:5px; width:600px; background-color:#E0EBF5; border:#000000 thin solid">
    		<p>Allo '.$prenom_invite.' !</p>
    		<p>je viens de découvrir un nouveau site  tout à fait génial et amusant.</p> 
    		<p>Sur ce site, blabla, bla
    		<p>bon covoiturage ! </p>
    		<p>'.$prenom_membre.'</p>
    		</div>'."\r\n";
     
     
     
    	/* Si le formulaire est envoyé alors on fait les traitements */
    	if (isset($_POST['submit']))  {
     
    	/* Récupération des valeurs des champs du formulaire */
    	if (get_magic_quotes_gpc())  {
     
    		$prenom_invite = stripslashes(trim($_POST['prenom_invite']));
    		$prenom_membre = stripslashes(trim($_POST['prenom_membre']));
    		$expediteur = 'contact.weziwezo.com';   //Compte email de votre hébergement.
    		$destinataire = stripslashes(trim($_POST['email_invite']));
    		$sujet = 'Va voir ce nouveau site sur le covoiturage.';
    		//$message = stripslashes(trim($_POST['message_invite']));
    		$message = $message_texte;
    		}
    	else {
     
    		$prenom_invite= trim($_POST['prenom_invite']);
    		$prenom_membre = trim($_POST['prenom_membre']);
    		$expediteur = 'contact.weziwezo.com';   //Compte email de votre hébergement.
    		$destinataire = trim($_POST['email_invite']);
    		$sujet = 'Va voir ce nouveau site sur le covoiturage.';
    		//$message = trim($_POST['message_invite']);
    		$message = $message_texte;
    	}
     
    	// Expression régulière permettant de vérifier si le format d'une adresse e-mail est correct
     
    		$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
     
    	// Expression régulière permettant de vérifier qu'aucun en-tête n'est inséré dans nos champs
     
    		$regex_head = '/[\n\r]/';
     
    	// Si le formulaire n'est pas posté de notre site on renvoie vers la page d'accueil
     
    	if($_SERVER['HTTP_REFERER'] != 'http://www.weziwezo.com/send_email.php')  {
     
    		header('Location: http://www.weziwezo.com/');
    	}
    		/* On vérifie que tous les champs sont remplis */
    	elseif (empty($prenom_invite)
    		|| empty($prenom_membre)
    		|| empty($expediteur)
    		|| empty($destinataire)
    		|| empty($message_invite)) {
     
    		$alert = 'Tous les champs doivent être renseignés';
    	}
    	/* On vérifie que le format de l'e-mail est correct */
    	elseif (!preg_match($regex_mail, $destinataire)) {
     
    		$alert = 'L\'adresse '.$destinataire.' n\'est pas valide';
    	}
    	/* On vérifie qu'il n'y a aucun header dans les champs */
    	elseif (preg_match($regex_head, $destinataire)
    		|| preg_match($regex_head, $prenom_membre)
    		|| preg_match($regex_head, $prenom_invite)
    		|| preg_match($regex_head, $message)) {
     
    		$alert = 'En-têtes interdites dans les champs du formulaire';
    	}
     
    	/* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
     
    	elseif (!isset($_COOKIE['sent']))  {
    	/* Destinataire (votre adresse e-mail) */
    		$to = $destinataire;
    	/* Construction du message */
    		//$msg = 'Bonjour,'."\r\n\r\n";
    		$msg .= 'Ce mail a été envoyé depuis weziwezo.com par  '.$prenom_membre."\r\n\r\n";
    	//	$msg .= 'Voici le message qui vous est adressé :'."\r\n";
    		$msg .= '***************************'."\r\n";
    		$msg .= $message."\r\n";
    		$msg .= '***************************'."\r\n";
     
    	/* En-têtes de l'e-mail */
    		$headers = 'From: '.$prenom_membre.' <'.$expediteur.'>'."\r\n\r\n";
    	/* Envoi de l'e-mail */
     
    	if (mail($to, $sujet, $msg, $headers)) {
     
    		$alert = 'E-mail envoyé avec succès';
    	/* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
    	* renvoyer un mail en rafraichissant la page */
    		setcookie("sent", "1", time() + 120);
    	/* On détruit la variable $_POST */
    		unset($_POST);
    	}
    		else {
     
    		$alert = 'Erreur d\'envoi de l\'e-mail';
    	}
      }
    	/* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
     
    		else {
    		unset($_POST);
    	}
    }
    ?>
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    1 - ta variable n'est pas définie : ta première autoconcatenation ne devrait pas en être une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message_texte = '--'.$boundary."\r\n";
    2 - http://a-pellegrini.developpez.com/tutoriels/php/mail/

    3 - la je ne vois pas, tu fais bien seulement echo $message_texte ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    -sabotage ta variable n'est pas définie : ta première autoconcatenation ne devrait pas en être une
    je ne comprends pas, ici, je l'ai bien défini!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ?php
     
    $message_texte .= ' <div style="padding:5px; width:600px; background-color:#E0EBF5; border:#000000 thin solid">
    <p>Allo '.$prenom_invite.' !</p>
    <p>je viens de découvrir un nouveau site  tout à fait génial et amusant.</p> 
    <p>Sur ce site, blabla, bla
    <p>bon covoiturage ! </p>
    <p>'.$prenom_membre.'</p>
    </div>'."\r\n";
    ?>



    et pour le echo, je faisais un echo dans un taxterea, ce qui faisait apparaitre les balises mais la a présent, ce sont les accents qui ne s'affichent pas bien.

    j'ai bien spécifier les entetes comme ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /* En-têtes de l'e-mail */
    	$headers = 'From: '.$prenom_membre.' <'.$expediteur.'>'."\r\n\r\n";
     
    	$headers .= 'Content-type: text/html; charset=utf-8'."\r\n\r\n";
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    je ne comprends pas, ici, je l'ai bien défini!!
    non et je t'ai déjà expliqué et indiqué ce qu'il fallait faire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    oui ok, sabotage, en relisant mieux ta phrase, ca résout le probleme de undefined variable

    et pour l'affichage des accents, est-ce qu'il manque de quoi dans mes headers?
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Vérifie que ton fichier .php est bien encodé lui même en UTF8.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    oui, ma page php est bien encodé en UTF8 ainsi que ma page ou il ya le include

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header( 'content-type: text/html; charset=utf8-8');
    mais, je me rends compte aussi que a chaque fois que je fais un include, les éléments en include n'affichent pas les accents.
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  8. #8
    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,

    C'est peut-être à cause de 'utf8-8'...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/html; charset=utf-8');

  9. #9
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    Eric2a
    C'est peut-être à cause de 'utf8-8'..
    Je vais tester pour voir

    Eric2a, pourrais-tu m'expliquer pourquoi et quand utiliser les 2 formes d'encodages


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $headers .= 'Mime-Version: 1.0'."\r\n";
    $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
    et


    $headers .= 'Content-type: text/html; charset=utf-8'."\r\n\r\n";


    parce que je suis en train de modifier mon script de mail pour envoyer les 2 formes de mail texte ou html et suis un peu melé avec ca!

    merci!
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  10. #10
    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
    multipart/mixed est requis pour les pièces jointes.

    multipart/alternative pour présenter le message dans des formats différents.

    Par exemple, si...
    - le serveur ou client mail ne prend pas en compte le format text/html (peu probable)
    ou
    - l'utilisateur ne désire que des mails au format texte brut

    la partie du message déclaré avec le format text/plain sera présentée.

    Chaque partie est séparée par une frontière.

    Ci-dessous un exemple indenté une meilleure assimilation :
    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
     
    $text=chunk_split(base64_encode($text));	// Format texte
    $html=chunk_split(base64_encode($html));	// Format HTML
     
    // On défine un code aléatoire qui servira à séparé chaque partie du mail
     
    $boundary='--='.md5(uniqid(mt_rand()));
     
    // L'entête classique
    $hdr=
    	'From: '.$from.$eol.
    	'Reply-To: '.$from.$eol.
    	'X-Priority: 3'.$eol.
    	'X-Mailer: PHP/'.phpversion().$eol.
    	'MIME-Version: 1.0'.$eol.
     
    	/* On signale que le message du mail est disponible en plusieurs formats */
     
    	'Content-Type: multipart/alternative; boundary="'.$boundary.'"'.$eol.$eol;
     
    	/* DEBUT */
    $msg=
    	'This is a multi-part/alternative message in MIME format.'.$eol.
     
    	/* Première partie : Le message au format TEXTE */
     
    		'--'.$boundary.$eol.
    			'Content-Type: text/plain; charset="UTF-8"'.$eol.
    			'Content-Transfer-Encoding: base64'.$eol.$eol.
    				$text.$eol.
     
    	/* Deuxième partie : Le message au format HTML */
     
    		'--'.$boundary.$eol.
    			'Content-Type: text/html; charset="UTF-8"'.$eol.
    			'Content-Transfer-Encoding: base64'.$eol.$eol.
    				$html.$eol.
     
    	/* FIN */
     
    		'--'.$boundary.'--'.$eol;	// Les deux tirets finaux mettent fin à la partie alternative

  11. #11
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    merci Sabotage et Eric 2a
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoyer un mail avec mon programme
    Par shrek dans le forum C++Builder
    Réponses: 8
    Dernier message: 06/12/2006, 12h27
  2. [ASP 3] Envoyer un Mail avec une piece jointe générer
    Par soltani.slim dans le forum ASP
    Réponses: 4
    Dernier message: 15/02/2006, 10h16
  3. envoyer un mail avec javascript
    Par robocop2776 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/10/2005, 14h38
  4. Comment envoyer un mail avec la commande mail
    Par pi3141563 dans le forum Réseau
    Réponses: 5
    Dernier message: 21/10/2004, 13h34
  5. Envoyer un mail avec mailto de haute importance
    Par VirginieGE dans le forum ASP
    Réponses: 3
    Dernier message: 13/08/2004, 13h41

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