Probleme mail en php help svp

Résolu/Fermé
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 - 20 févr. 2009 à 00:11
 kouami18 - 20 févr. 2009 à 11:51
Bonjour,

cas classique je charge un formulaire dans un mail :
ini_set('SMTP', 'mail.ei-consultant.com');
ini_set('smtp_port', '25');
ini_set('sendmail_from','Ei-consultant.com');
$message = load_acquereur($message);
$to = "eic@ei-consultant.com";
$object = "Requête Acquereur";
$From = "Ei - Consultant";
$headers = "From: $From\nMIME-version: 1.0\nContent-Type: text/html; charset=iso-8859-1";
if (mail($to,$object,$message,$headers)) {

la fonctions lad_acquereur est une simple mise en page :

function load_acquereur($message) {
$message = "
<table width='400' border='1' align='center'>
<tr>
<td colspan='2'><hr><b>REQUETE ACQUEREUR</b><br><br>
<hr><b>COORDONNEES</b><br>
</td>
</tr>
<tr>
<td width='141'>Nom :</td>
<td width='101'>".$_POST['a_nom']."</td>
etc...

au depart avec $headers = "From: $From\nContent-Type: text/html; charset=iso-8859-1";
je revais en mail le code brut html
donc je mets :
$headers = "From: $From\nMIME-version: 1.0\nContent-Type: text/html; charset=iso-8859-1";

et la je recois bien les champs et variables seulement le code html est mal interprete :

par exemple dans load_acquereur ya border=1 dans le mail pas de bordure

dans le mail aussi au lieu de changer de colonne avec <td> il saute une ligne, ainsi j'ai :
Nom :
(variable_nom)

au lieu de :
Nom : (variable_nom)

s'il vous plait je ne comprends pas pourquoi ca ne marche qu'a moitie et je ne trouve pas l'erreur

merci d'avance pour vos reponses
A voir également:

22 réponses

IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 00:21
Pour envoyer des email texte et html facilement, je te conseille de faire une recherche de la classe 'phpmailer' sur notre ami google
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 00:34
ok merci pour la reponse.

tout d'abord qu'est ce que phpmailer ? (je vais chercher en attendant la reponse)

et surtout pourquoi la fonction mail n'interprete pas tout le html ?

c a d les hr sont pas la les passages de colonne a colonne sont des sauts a la ligne pas de bordures etc.

donc il "compile"(si je me gourre pas d'expression) puisqu'il ne mets pas le <table>....etc. brut

mais il ne "comiple pas correctement.

cela vient'il du header : $headers = "From: $From\nMIME-version: 1.0\nContent-Type: text/html; charset=iso-8859-1"; ?

s'il vous plait j'ai un deadline pour rendre ce site demain le dernier truc c'est la mise en page du mail et ca me frustre de bloquer sur un truc aussi bete alors que le reste du site tourne comme une horloge.

encore merci pour vos suggestions
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 00:43
phpmailer est une classe php pour envoyer des emails.

Télécharge-le et mets le en place sur ton site, tout devrait fonctionner nickel !

require $_SERVER['DOCUMENT_ROOT'].'/phpmailer/class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = "adresse_de_l_expediteur@lalala.com";
$mail->FromName = "Nom de l'expéditeur";
$mail->Subject = "Sujet de l'email";
$mail->Charset = "UTF-8"; // ou ISO
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML("Ton <b>message</b> en <i>HTML</i>");
$mail->AddAddress("adresse_du_recepteur@lalala.com");
$mail->Send();

Et c'est envoyé !
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 00:55
$mail->MsgHTML("Ton <b>message</b> en <i>HTML</i>");

cela veut il dire quil fo que je copie colle ma fonction a chaque envoi de mail ?

ca enleve tout le caractere generique du site non ?

dautre part : require $_SERVER['DOCUMENT_ROOT'].'/phpmailer/class.phpmailer.php';

document root je mets la racine du serveur ? dans quel fichier de conf se trouve la classe phpmailer ?

et sans vouloir faire la mauvaise tete comment ca se fait qu'il marque les donnes mais pas la mise en forme ?
il doit yavoir moyen de corriger ca simplement non ?

encore merci pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 01:07
*require $_SERVER['DOCUMENT_ROOT'].'/phpmailer/class.phpmailer.php';
->
crée simplement un dossier phpmailer à la racine de ton site et mets-y le fichier class.phpmailer.php

*$mail->MsgHTML("Ton <b>message</b> en <i>HTML</i>");
->
Copier/ Coller ? non, bien sur ...
function ta_fonction(){
return $la_chaine_que_renvoit_ta_fonction;
}
function envoyer_email($adresse_recepteur){
//... ici le même code (ou presque) que dans mon post précédent
$mail->MsgHTML(ta_fonction());
}
pour envoyer un email : envoyer_email("adresse_du_recepteur@lalala.com");

*ca enleve tout le caractere generique du site non ?
->
Je ne comprends pas cette question ...

*et sans vouloir faire la mauvaise tete comment ca se fait qu'il marque les donnes mais pas la mise en forme ?
il doit yavoir moyen de corriger ca simplement non ?
->
Certainement parce qu'il n'envoie pas le mail en HTML mais simplement en texte. Je ne sais pas exactement pour quelles raisons. Je me rappelle avoir galéré pas mal moi aussi à une époque avec la simple fonction mail de php. la class.phpmailer.php a fonctionné chez moi au premier essai ...

*encore merci pour ton aide
->
avec plaisir
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:21
ok je teste a l'instant je poste le resultat dans 5min

encore merci
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:24
voici l'erreur de IE : Warning: require(/web/sites/vhbu3/2/92/107970/public/www/phpmailer/class.phpmailer.php) [function.require]: failed to open stream: No such file or directory in /web/sites/vhbu3/2/92/107970/public/www/acquereur.php on line 115

Fatal error: require() [function.require]: Failed opening required '/web/sites/vhbu3/2/92/107970/public/www/phpmailer/class.phpmailer.php' (include_path='.:/usr/share/php:/usr/share/pear') in /web/sites/vhbu3/2/92/107970/public/www/acquereur.php on line 115
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:28
de plus j'ai fouille l'espace sur le serveur avec filezilla et je ne trouve aucun repertoire ou fichier du type phpmailer
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 01:29
Ha be ça ca veut dire qu'il ne trouve pas le fichier indiqué et donc que l'adresse donnée est mauvaise ...

Tu peux virer sir tu veux le 'DOCUMENT_ROOT et ne faire que include('adresse_relative_ou_absolue_du_fichier')

T'es sur d'avoir mis le fichier téléchargé au bon endroit ?
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:33
ok je teste un simple include

en revanche "le fichier telecharge" il s'agit de quoi ?

et ('adresse_relative_ou_absolue_du_fichier') si je ne le trouve pas sur le serveur faut le telecharger ?
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 01:33
Ce dossier phpmailer tu dois le créer bien sur !!

Tu peux d'ailleurs nommer ce dossier autrement, 'classes' par exemple.

Tu peux aussi mettre simplement le fichier class.phpmailer.php téléchargé à la racine de ton site.
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 01:36
Ha okééé, tu n'as même pas téléchargé le fichier ...

https://sourceforge.net/projects/phpmailer/files/

Ca devrait mieux fonctionner une fois que tu l'auras téléchargé et placé là ou tu veux sur ton serveur ! :D
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:36
je ne trouve pas de lien de telechargement pour ce fichier peux tu me dire ou le trouver ?
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:37
ah oopps tu mas pris de vitesse

je telecharge et teste ca et poste dans 5min

encore merci
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:38
euh lol je prends quelle version ?
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 01:41
Ben ça dépend si tu travailles avec du php 4 ou du php 5 ... le deuxième ou le troisième lien donc ...
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:42
ca ne renvoie pas d'erreur mais je ne recois pas le mail.

puis je mettre un controle d'erreur du genre :

if ($mail->Send();) {
echo "<div align='center'>Votre requête a bien été envoyée.<br>
Vous recevrez une réponse par e-mail sous 48h.</div><hr>";
echo "\n",$message;
}else{
echo "Votre requête n'a pas pu être envoyée<hr>";
}
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 01:47
if(!$mail->Send())echo $mail->ErrorInfo;

Courage, on va y arriver !! :D
0
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 19
20 févr. 2009 à 01:52
if(!$mail->Send()) {
echo $mail->ErrorInfo;
}else{
echo "<div align='center'>Votre requête a bien été envoyée.<br>
Vous recevrez une réponse par e-mail sous 48h.</div><hr>";
}

il me confirme bien l'envoi, en revanche dans le mail recu :

To view the message, please use an HTML compatible email viewer!

donc :
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";

et dans phpmailer :

* @var string
*/
var $AltBody = '';

/**
* Sets word wrapping on the body of the message to a given number of
* characters.

d'ou vient l'erreur ?
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
20 févr. 2009 à 01:56
T'es sur que le problème ne vient pas plutot de ta bote d'email qui ne sait pas lire les emails envoyés au format HTML ?

C'est ce que le message d'erreur semble dire ...

Dans 15 minutes je suis dans mon lit ...
0