Probleme mail en php help svp
Résolu
crazyghandi
Messages postés
312
Date d'inscription
Statut
Membre
Dernière intervention
-
kouami18 -
kouami18 -
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
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:
- Probleme mail en php help svp
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Créer une adresse mail hotmail - Guide
- Comment télécharger un mail - Guide
- Cegetel mail ✓ - Forum Mail
22 réponses
Pour envoyer des email texte et html facilement, je te conseille de faire une recherche de la classe 'phpmailer' sur notre ami google
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
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
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é !
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é !
$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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
*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
->
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
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
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
de plus j'ai fouille l'espace sur le serveur avec filezilla et je ne trouve aucun repertoire ou fichier du type phpmailer
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 ?
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 ?
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 ?
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 ?
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.
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.
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
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
Ben ça dépend si tu travailles avec du php 4 ou du php 5 ... le deuxième ou le troisième lien donc ...
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>";
}
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>";
}
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 ?
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 ?