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

Autres composants PHP Discussion :

Zend_Mail : problème avec fonction addTo


Sujet :

Autres composants PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut Zend_Mail : problème avec fonction addTo
    J'utilise la classe Zend_Mail pour envoyer des mail
    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
     
    if( $this->_request->getParam('id') )
    		{
    			// extraction du mail entreprise
        		$ent_id = $this->_request->getParam('id');
        		$entreprises = new Entreprise();
    			$ent = $entreprises->find($ent_id)->current()->ent_email;
    		}
     
     
    		if( $this->_request->isPost() )
    		{
     
    			//création d'un filtre
    			Zend_Loader::loadClass('Zend_Filter_StripTags');
    			$filter = new Zend_Filter_StripTags();
     
    			//récuperation des champs du formulaire
    			$nom = trim($filter->filter($this->_request->getPost('nom')));
    			$prenom = trim($filter->filter($this->_request->getPost('prenom')));
    			$email = trim($filter->filter($this->_request->getPost('mail')));
    			$message = trim($filter->filter($this->_request->getPost('message')));
     
     
    			$identite = $nom." ".$prenom;
     
    			//création du mail
    			$mail = new Zend_Mail();
     
    			//sujet du mail
    			$mail->setSubject('Reponse offre - stoodies');
     
    			//corps du message
    			$mail->setBodyText($message);
     
    			//expediteur
    			$mail->setFrom($email, $identite);
     
    			//destinataire
    			$mail->addTo($ent);
    			//$mail->addTo('une_adresse_qui_existe@xxx.com');
     
    			//envoi du mail
    			$mail->send();
    		}
    Le problème vient que pour la fonction addTo quand je met directement un adresse cela marche, mais lorsque je met la variable $ent (qui est l'email récupéré dans la bdd) cela ne marche pas, j'ai internal serveur error.

    Je ne comprends pas

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Est-ce que les logs disent quelque chose ?
    As-tu vérifié que c'est bien une adresse e-mail que tu récupères de la BDD ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    Oui c'est bien une adresse mail (enfin une chaine mais qui est vérifié a l'enregistrement dans la base) que je recuprère, de plus quand je fais un echo de $ent c'est bien l'adresse que je souhaite (la meme que celle que j'ai mis en dur directement)

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    J'essaie juste de te donner des pistes, car je n'ai ni tes scripts ni ta BDD. Il ya forcément un truc quelque part, car il n'y a pas de différence entre une chaîne et une variable qui contient cette chaîne. As-tu comparé la variable et la chaîne, par exemple ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    oui je viens de faire le test de comparaison, et apparament c'est bien les memes...
    voici le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ('mon_adress@mon_domaine.fr' == $ent)
    			{ $this->view->test = "ok"; }
    			else {$this->view->test = "faux"; }
    et dans la vue, la variable $this->test est égale a ok

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Essaie avec $mail->addTo(strval($ent)); pour voir ?
    Je ne vois vraiment pas ce qui peut poser problème, es-tu certain de ne rien changer d'autre lorsque tu mets directement l'adresse à la place de la variable ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    Non strval ne change rien, et il n'y a aucune interférence avec $ent
    Je ne comprends plus rien

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Si tu fais un point d'arrêt juste avant send(), ça donne quoi ? As-tu essayé d'inspecter le contenu de $mail avant et après l'appel à addTo() ?

  9. #9
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Rajoute un 3ème "égal" a ta comparaison... A priori, ça devrait faire la même chose que le "stringval", mais ça coute rien d'essayer.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    Un 3eme egal ne change rien, merci de ta participation..
    J'ai fais un var_dump($ent) et ca m'ecrit string(28) "mon.email@domain.fr"

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    Je viens de remarqué un truc en bidoullant le code, lorsque que je referme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($this->_request->isPost() )
    juste avant de créer mon mail, l'adresse récupéré en base marche, mais bon le mail s'envoi directement lors du chargement de la page et sans les données rentrées dans le formulaire...

    Si ca peut vous aidez

  12. #12
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    C'est toi qui l'a créé, cette fonction? Elle n'existe pas chez moi (ZF 1.0.0)

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    tu parles de quelle fonction ? car moi aussi je suis sous ZF 1.0

  14. #14
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    $this->_request->isPost()

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    Non je l'ai vu dans le tuto suivant: http://g-rossolini.developpez.com/tu...r/?page=modele

    c'est pour tester si le formulaire a été soumi, de plus ca marche bien pour mes autres fonctionnalités, comme une recherche

    Cette fonction est defini dans Controller/Request/Http.php

  16. #16
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Je ne comprends pas, chez moi elle n'est pas définie dans Zend_Controller_Request...

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    Sinon as tu une autre idée de comment faire ?
    Une vue est appeller comme ceci http://monsite/controller/action?id=5, j'ai un formulaire (avec 4 champs: nom, prenom, email, message) et lorsque je clique sur le bouton envoyé, je veux qu'a partir de l'id je récupère dans la base l'adresse mail du destinataire, et que je créé le mail avec les info du formulaire

    Moi la fonction isPost() est defini dans Zend/Controller/Request/Http.php ligne 705

  18. #18
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Ok moi je suis encore en Zend_Controller_Request_Abstract, c'est pour ça (je vois pas pourquoi par contre )
    Pout ton histoire de mail, honnêtement je ne vois pas trop... En fait je n'ai pas très bien compris ce que tu entendais, dans un de tes messages, par
    juste avant de créer mon mail, l'adresse récupéré en base marche, mais bon le mail s'envoi directement lors du chargement de la page et sans les données rentrées dans le formulaire...
    Tu veux dire qu'on rentre dans le isPost avant la validation des données? Plutot curieux... Essaye avec un classique "isset($_POST['email'])" pour voir...

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Par défaut
    Ca va peut-etre aidé...je met ma vue et mon controlleur (c pas bien long)
    vue module.phtml:
    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
     
    <form class="form_rech" action="/repondre/module" method="post" >
    	<fieldset>
    	<legend> Réponse à l'offre </legend>
    	<ol>
    		<li>
    			<label for="nom"> Nom: </label>
    			<input type="text" name="nom" />
    		</li>
     
    		<li>
    			<label for="prenom"> Prénom: </label>
    			<input type="text" name="prenom" />
    		</li>
     
    		<li>
    			<label for"mail"> E-mail: </label>
    			<input type="text" name="mail" />
    		</li>
     
    		<li>
    			<label for="message"> Message: </label>
    			 <textarea name="message" rows="10" cols="50">
      			 </textarea>
    		</li>
     
    		<li>
    			<input type="submit" value="Répondre" />
    		</li>
    	</ol>
    	</fieldset>
    </form>
    et le controlleur associé:
    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
     
    function moduleAction()
    	{		
    		if( $this->_request->getParam('id') )
    		{
    			// extraction du mail entreprise
        		        $ent_id = $this->_request->getParam('id');
        		        $entreprise = new Entreprise();
    			$dest = $entreprise->find($ent_id)->current()->ent_email;
    		}
     
    		if( $this->_request->isPost() )
    		{
     
    			//création d'un filtre
    			Zend_Loader::loadClass('Zend_Filter_StripTags');
    			$filter = new Zend_Filter_StripTags();
     
    			//récuperation des champs du formulaire
    			$nom = trim($filter->filter($this->_request->getPost('nom')));
    			$prenom = trim($filter->filter($this->_request->getPost('prenom')));
    			$expediteur = trim($filter->filter($this->_request->getPost('mail')));
    			$message = trim($filter->filter($this->_request->getPost('message')));
     
     
    			$identite = $nom." ".$prenom;
     
    			//création du mail
    			$mail = new Zend_Mail();
     
    			//sujet du mail
    			$mail->setSubject('Reponse offre - stoodies');
     
    			//corps du message
    			$mail->setBodyText($message);
     
    			//expediteur
    			$mail->setFrom($expediteur, $identite);
     
    			//destinataire
    			$mail->addTo($dest, '');
    			//$mail->addTo("vrai.adresse@domaine.fr");
     
    			//envoi du mail
    			$mail->send();
    		}
    	}
    En faite ca m'est égal du moment où je récupère l'email dans la base

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

Discussions similaires

  1. Problème avec fonctions et string/char
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 08/04/2006, 17h54
  2. Problème avec fonction
    Par Goundy dans le forum C
    Réponses: 24
    Dernier message: 01/10/2005, 21h17
  3. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 12h00
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 09h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 22h52

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