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 email avec wampplite + Sql


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 86
    Par défaut Envoyer un email avec wampplite + Sql
    Bonjour,

    J'essaye d'envoyer le un mail a partir du code ci-dessous mais cela ne fonctionne pas.

    J'ai le message d'erreur suivant:


    ( ! ) Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\xampplite\htdocs\Test Debug\test2.php on line 53
    Call Stack
    # Time Memory Function Location
    1 0.0522 73088 {main}( ) ..\test2.php:0
    2 0.0570 79216 mail ( ) ..\test2.php:53

    Emails envoyés
    "Emails envoyes" est affiché mais je ne recois rien. Dans mon fichier c:\xampplite\apache\php.ini j'ai SMTP = smtp.gmail.com et sendmail_from = monadresse@gmail.com , (mais mon fai est orange.fr).
    D'avance merci pour votre aide,

    Sphere

    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
    <?php
     
    $base=mysql_connect("localhost", "root","");
    mysql_select_db("DB1", $base);
    $user_alertes = array();	
     
    	// on selectionne tout les alertes ( nom, email, categorie/region souscrit )
    	$sql1 = mysql_query("SELECT * FROM alerts"); 
     
    	while($result = mysql_fetch_array($sql1))  
    	{ 	 	
     
    	if(!isset($user_alertes[$result['email']])){   
    			$user_alertes[$result['email']] = array();   
    			$user_alertes[$result['email']]['msgs'] = array(); 
    		} 	
     
    		//	on selectionne 	tout les annonces en les filtrants avec les ( categorie/region souscrit ) de l'alerte		
    		$sql2 = "SELECT * FROM annonces WHERE region = ".$result['region']." AND categorie = ".$result['categorie']." LIMIT 5 ";
     
    		$aff = mysql_query($sql2) or die(mysql_error().$sql2); 
     
    		while($data = mysql_fetch_array($aff)) 
    		{ 			
     
    			// Compose le mail 
    /* 			$msg = @file_get_contents("mailtemplates.txt"); 			
    			$msg = @str_replace("{@ADS}", $data['adtitle'], $msg);		 */	
     
    			$msg .='<p><b>annonce numero</b> '.$data['adid'].' ('.$data['adtitle'].') - <br>Description: '.$data['addesc'].$data['region'].$data['categorie'].'</p>';
     
     
    			$user_alertes[$result['email']]['msgs'][] = $msg;   
    			$user_alertes[$result['email']]['subject'] = 'Alerte: une nouvelle annonce';			
    		}
    	}
     
    	//fonction envoi email	
    	$to       = $result['name'].' <'.$result['email'].'>';
    	$headers  = "MIME-Version: 1.0rn";
    	$headers .= "From:Mon nom <mon@mail>nReply-to: nX-Mailer:PHPn"; 
    	$headers .= "Content-type: text/html; charset= iso-8859-1n";
    	$sujet    = "petites annonces souscrites alerte email";
    	$body  ='
    	<html>
        <head>
    	</head>
    		<body>
    		<p>Bonjour,<br>'.$msg.'
    		</body>
    	</html>';
     
    	mail($to,$sujet,$body,$headers);
    	echo "<br>Emails envoyés";	
     
    ?>

  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
    Par défaut
    Commence par bien ecrire tes en-tête : je ne suis pas sur qu'il apprécie d'avoir des petits "n" partout.
    http://a-pellegrini.developpez.com/tutoriels/php/mail/

    Ensuite, tu vas devoir utiliser le serveur SMTP de ton FAI ; je ne pense pas que Gmail accepte de mails tiers.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 86
    Par défaut
    J'utilise pourtant mon adresse gmail dans thunderbird....

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 86
    Par défaut
    Re-bonjour,

    je viens de changer le code comme ceci,

    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
    	//fonction envoi email	
    	$to       = $result['name'].' <'.$result['email'].'>';
    	$headers  = 'Mime-Version: 1.0'."\r\n";
    	$headers .= "From:Pierick <monadresse@gmail.com>\r\nReply-to: nX-Mailer:PHP\n"; 
    	$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
    	$headers .= "\r\n";
    	$sujet    = "petites annonces souscrites alerte email";
    	$body  ='
    	<html>
        <head>
    	</head>
    		<body>
    		<p>Bonjour,<br>'.$msg.'
    		</body>
    	</html>';
     
    	mail($to,$sujet,$body,$headers);
    	echo "<br>Emails envoyés";
    mais j'ai maintenant le message d'erreur dessous :

    SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. 5sm600993eyh.40 in C:\xampplite\htdocs\Test Debug\test2.php on line 54

  5. #5
    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
    Par défaut
    J'utilise pourtant mon adresse gmail dans thunderbird....
    j'ai parlé de serveur d'envoi de mail, pas de pouvoir consulter une messagerie.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 86
    Par défaut
    Ok,

    Dans tous les cas, je vais directement essayer de le tester en l'intégrant a mon site joomla en ligne.

    Le plus important pour l'instant étant de vérifier que les requêtes sql sont justes.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 86
    Par défaut
    Je viens de m'apercevoir que les variables : $result['name'] et $result['email'] ne retournent aucune valeur.

    Je ne comprends pas pourquoi

    Localelment en utlisant :
    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
     
    	//fonction envoi email	
    	$to       = $result['name'].' <'.$result['email'].'>';
    	$headers  = 'Mime-Version: 1.0'."\r\n";
    	$headers .= "From:Sphere <monadresse@gmail.com>\r\nReply-to: nX-Mailer:PHP\n"; 
    	$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
    	$headers .= "\r\n";
    	$sujet    = "petites annonces souscrites alerte email";
    	$body  ='
    	<html>
        <head>
    	</head>
    		<body>
    		<p>Bonjour,<br>'.$msg.'
    		</body>
    	</html>';
     
    	//mail($to,$sujet,$body,$headers);
     
    	echo $result['name'];
    	echo "<br>";
    	echo $result['email'];
    	echo "<br>";
    	echo $headers;
    	echo "<br>";
    	echo $sujet;
    	echo "<br>";
    	echo $body;
    	echo "<br>";
    	echo "<br>Emails envoyés";

    J'obtiens dans une fenetere l'affichage :

    Mime-Version: 1.0 From:Sphere Reply-to: nX-MailerHP Content-type: text/html; charset=utf-8
    petites annonces souscrites alerte email

    Bonjour,

    annonce numero 7 (titre annonce6) -
    Description: texte annonce6752

    annonce numero 4 (titre annonce3) -
    Description: texte annonce3753


    Emails envoyés
    Une idée Sabotage?

  8. #8
    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
    Par défaut
    il vient d'ou ce $result ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 86
    Par défaut
    Il vient de la cinquième ligne du code (juste après la définition de $sql1):

    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
    <?php
     
    $base=mysql_connect("localhost", "root","");
    mysql_select_db("DB1", $base);
    $user_alertes = array();	
     
    	// on selectionne tout les alertes ( nom, email, categorie/region souscrit )
    	$sql1 = mysql_query("SELECT * FROM alerts"); 
     
    	while($result = mysql_fetch_array($sql1))  
    	{ 	 	
     
    	if(!isset($user_alertes[$result['email']])){   
    			$user_alertes[$result['email']] = array();   
    			$user_alertes[$result['email']]['msgs'] = array(); 
    		} 	
     
    		//	on selectionne 	tout les annonces en les filtrants avec les ( categorie/region souscrit ) de l'alerte		
    		$sql2 = "SELECT * FROM annonces WHERE region = ".$result['region']." AND categorie = ".$result['categorie']." LIMIT 5 ";
     
    		$aff = mysql_query($sql2) or die(mysql_error().$sql2); 
     
    		while($data = mysql_fetch_array($aff)) 
    		{ 			
     
    			$msg .='<p><b>annonce numero</b> '.$data['adid'].' ('.$data['adtitle'].') - <br>Description: '.$data['addesc'].$data['region'].$data['categorie'].'</p>';
     
     
    			$user_alertes[$result['email']]['msgs'][] = $msg;   
    			$user_alertes[$result['email']]['subject'] = 'Alerte: une nouvelle annonce';			
    		}
    	}
     
    	//fonction envoi email	
    	$to       = $result['name'].' <'.$result['email'].'>';
    	$headers  = 'Mime-Version: 1.0'."\r\n";
    	$headers .= "From:Sphere <monadresse@gmail.com>\r\nReply-to: nX-Mailer:PHP\n"; 
    	$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
    	$headers .= "\r\n";
    	$sujet    = "petites annonces souscrites alerte email";
    	$body  ='
    	<html>
        <head>
    	</head>
    		<body>
    		<p>Bonjour,<br>'.$msg.'
    		</body>
    	</html>';
     
    	//mail($to,$sujet,$body,$headers);
     
    	echo $result['name'];
    	echo "<br>";
    	echo $result['email'];
    	echo "<br>";
    	echo $headers;
    	echo "<br>";
    	echo $sujet;
    	echo "<br>";
    	echo $body;
    	echo "<br>";
    	echo "<br>Emails envoyés";	
     
    ?>

  10. #10
    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
    Par défaut
    Tu as controlé ce qu'il valait ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 86
    Par défaut
    Oui, je l'ai fait par affichage dans une fenêtre : rien.

  12. #12
    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
    Par défaut
    Quand la boucle est fini, $result ne vaut plus rien ; les echos que tu as mis a la fin par exemple, ne peuvent rien afficher.

    Je dirais meme que ca revele un problème de logique dans ce que tu veux faire : tu lis toutes les alertes dans la base, chaque alerte est visiblement associé a un email ... et au final tu n'envoies qu'un seul mail ?

    Soit tu veux effectivement envoyer un mail pour chaque alerte et alors le mail() doit etre dans la boucle.
    Soit tu veux regrouper toutes les alertes de chaque destinataire et alors il faut faire un tableau indexé par email, un peu comme il y a déja d'ailleurs dans ton code, et quand tu as tout recolté, tu reparcours le tableau et fait un mail() pour chaque email.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 86
    Par défaut
    Bonsoir,

    Je vais essayer de voir cela dans eclipse php.

    Au fait tu as une idee de la facon la plus simple de l'integrer a un composant Joomla (gestion d'annonces immobieres)? C'est a dire, une alerte, doit être développé en temps que composant a part entiere ou integrer au composant (fichier .php) en question? (Je n'arrive pas a clairement definir mon spec).

Discussions similaires

  1. Envoyer un email avec Outlook
    Par moumicha dans le forum Access
    Réponses: 17
    Dernier message: 19/07/2006, 09h58
  2. Envoyer des email avec PHP
    Par dolf13 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 12/07/2006, 10h49
  3. Envoyer un Email avec Outlook à partir d'access
    Par pilotcoater dans le forum Access
    Réponses: 1
    Dernier message: 13/03/2006, 20h04
  4. [VBA]envoyer un email avec un fichier joint à partir d'excel
    Par mcay dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2005, 10h21
  5. [FPDF] Créer un PDF et l'envoyer par email avec PHPMailer
    Par nico33307 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 12/12/2005, 22h49

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