Page 1 sur 1

Balises html dans l'envoi de mail

Posté : 21 sept. 2014, 22:44
par nico44530
Bonjour,

J'utilise une fonction qui permet de faire modifier son mot de passe en cas d'oubli :
function recover($recoverEmail){
	$email = $_POST['recoverEmail'];
	if(preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!",$email)){
		if(!empty($_POST['recoverEmail'])){
			$req = Bdd::connect() -> prepare('SELECT id, nom, prenom, email FROM users WHERE email = :email');
			$req -> execute(array('email' => $email));
			$donnees = $req -> fetch();
			if(!$donnees){
				echo '<span class="error">Aucun compte n\'est associé à cette email :<br />'.$email.'</span>';
			} else {
				$newPass = chaine(8);
				$cryptPass = sha1($newPass);
				$req1 = Bdd::connect()->prepare('UPDATE users SET mdp = :newPass WHERE email = :email');
				$req1 -> execute(array('newPass' => $cryptPass,'email' => $email));
				$req1 -> closeCursor();
				if(preg_match('#@(hotmail|live|msn).[a-z]{2,4}$#', $email)){
					$passage_ligne = "\n";
				} else {
					$passage_ligne = "\r\n";
				}
				$headers  = 'From: Web Astronomie <[email protected]>'.$passage_ligne;
				$headers .= 'Reply-to: Web Astronomie <[email protected]>'.$passage_ligne;
				$headers .= 'MIME-Version: 1.0'.$passage_ligne;
				$headers .= 'Content-Type: multipart/alternative;'.$passage_ligne;
				$sujet    = 'Modification du mot de passe de votre compte Web Astronomie';
				$message .= 'Content-Type: text/html; charset=\'ISO-8859-1\''.$passage_ligne;
				$message .= 'Content-Transfer-Encoding: 8bit'.$passage_ligne;
				$message .= '<table>';
				$message .= '<tr><td>Coucou <strong>Test</strong></td></tr>';
				$message .= '</table>';
				if(mail($email, $sujet, $message, $headers)){
					echo '<span class="success">Un nouveau mot de passe viens de vous être envoyé</span>';
				} else {
					echo '<span class="error">Erreur lors de l\'envoie de votre mot de passe</span>';
				}
			}
			$req -> closeCursor();
		} else {
			echo '<span class="error">Veuillez remplir au moins un champ</span>';
		}
	} else {
		echo '<span class="error">Veuillez entrer une adresse électronique valide</span>';
	}
}
Le problème c'est que dans l'email reçu, je reçois ça :

Code : Tout sélectionner

Content-Type: text/html; charset='ISO-8859-1' Content-Transfer-Encoding: 8bit <table><tr><td>Coucou <strong>Test</strong></td></tr></table>
Et j'aimerais ajouter mon logo et améliorer le design du mail, mais si les balises s'affichent, ça va pas être possible :(

Pourtant je pense avoir rien oublié dans le script.
Merci pour votre aide

Re: Balises html dans l'envoi de mail

Posté : 22 sept. 2014, 08:04
par arnaud69
Bonjour,

Ce qui est dommage dans ta fonctuion, c'est que tu fais du joli PDO puis un simple mail pour l'envoi.
Passe par un petit phpmailer, qui te permet de générer ce que tu veux ! (logo, attachment ou pj, formatage par wordwrap, etc...)

Re: Balises html dans l'envoi de mail

Posté : 22 sept. 2014, 12:15
par ynx
Salut,

En mettant les entêtes dans le contenu du message ca marche moins bien ;)

Remplace ces deux lignes :
$message .= 'Content-Type: text/html; charset=\'ISO-8859-1\''.$passage_ligne;
$message .= 'Content-Transfer-Encoding: 8bit'.$passage_ligne;
$message .= '<table>';
par celles-ci :
$headers .= 'Content-Type: text/html; charset=\'ISO-8859-1\''.$passage_ligne;
$headers .= 'Content-Transfer-Encoding: 8bit'.$passage_ligne;
$message = '<table>';
Bonne journée

Re: Balises html dans l'envoi de mail

Posté : 22 sept. 2014, 13:07
par nico44530
Merci pour vos messages,

Merci à ynx pour mon erreur d'inattention, j'ai même pas calculé la variable $message à changer =D> .
Et arnaud69 je tiens vraiment à tout coder et personnaliser dans mon site :wink: .

Re: Balises html dans l'envoi de mail

Posté : 23 sept. 2014, 09:08
par arnaud69
Merci pour vos messages,

Merci à ynx pour mon erreur d'inattention, j'ai même pas calculé la variable $message à changer =D> .
Et arnaud69 je tiens vraiment à tout coder et personnaliser dans mon site :wink: .
Je comprends que tu veuilles coder, mais pourquoi réinventer la roue ?
PhpMailer est à mon gout, un des meilleurs outils d'envoi de mails (ses capacités sont énormes), et c'est aussi une classe libre et facile à utiliser...

Re: [RESOLU] Balises html dans l'envoi de mail

Posté : 23 sept. 2014, 14:56
par nico44530
Oui, je m'en suis rendu compte, et grâce à elle, plus d'envois SPAMS
j'ai changé d'avis ^^

Mais dans le dossier phpmailer, on doit garder quels fichiers ?
Parce que y'en a qui servent à rien ex : "docs","examples","languages","test" ??