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

Symfony PHP Discussion :

Problèmes avec l'envoi d'email depuis une task


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 32
    Points : 16
    Points
    16
    Par défaut Problèmes avec l'envoi d'email depuis une task
    Bonjour,

    Sur symfony 1.4.1

    Je rencontre 2 problèmes lorsque j'essaie d'envoyer un mail depuis une task symfony. Voici le code que j'utilise pour la méthode execute() de ma task :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      protected function execute($arguments = array(), $options = array())
      {
        $to = array(
          'foo@example.com' => 'Mr Foo',
          'bar@example.com' => 'Miss Bar',
        );
        $this->getMailer()->composeAndSend('from@example.com', $to, 'Subject', 'Body');
      }
    1/ Premier problème, la task retourne une erreur et aucun mail n'est envoyé lorsque je précise les noms des destinataires en plus des adresses mail :

    Warning: mail(): SMTP server response: 501 <Mr Foo <foo@example.com>>: "@" or "." expected after "Mr" in C:\mondossierwww\monprojet\lib\vendor\symfony\lib\vendor\swiftmailer\classes\Swift\Transport\SimpleMailInvoker.php on line 50

    Pour faire fonctionner l'envoi, je dois utiliser un array qui ne comporte que les adresses mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        $to = array(
          'foo@example.com',
          'bar@example.com',
        );
    Alors que les tableaux de destinataires avec adresse mail + nom fonctionnent très bien dans le reste de mon application.

    Comment faire pour pouvoir les utiliser également dans les Task ?


    2/ Le deuxième problème est que symfony ne semble pas récupérer le charset que je lui indique dans le fichier settings.yml.
    Pour faire mon envoi de mail, j'ai du copier tous les fichiers de configuration yml du répertoire /app/APP_NAME/config vers /config pour utiliser ma configuration pour SwiftMailer, pour le charset à utiliser, etc...
    Cependant, lorsque je lance ma task, l'objet du mail est vide si il comporte des caractères spéciaux. Pour que l'objet du mail utilise le bon encodage, je dois le spécifier en plus dans le fichier ProjectConfiguration.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sfConfig::set('sf_charset', 'UTF-8');
    Ce qui ne me semble pas logique puisque l'encodage devrait être récupéré depuis le settings.yml.

    Comment peut-on faire pour que symfony charge la configuration des fichiers yml dans le bon ordre quand on utilise une Task ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Le settings.yml est propre à une application. Quand tu execute une tâche, on n'a pas forcément besoin d'être dans le "contexte" d'une application.

    Donc la config des applications n'est pas chargée par défaut. Tu peux faire en sorte qu'elle soit chargée en déclarant une méthode configure() dans la classe de ta task de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    protected function configure()
    {
      $this->addOptions(array(
        new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'),
        new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
        new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'),
      ));
    }
    Comme ça, si tu mets un --application="mon-application" tu auras la configuration de l'application chargée, et donc le app.yml, le settings.yml etc.
    De plus, tu pourras changer l'environnement concerné.
    La dernière ligne est seulement utile si tu as besoin de connexion à la base de données.

    Voilà qui devrait régler ton 2/

    Pour le 1/ j'ai toujours utilisé comme toi le tableau adresses => noms, ça me semble étrange que ça ne fonctionne pas dans une task. Mais là je n'ai pas moyen de faire des tests.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Merci de ta réponse Tirkyth.

    Ajouter l'application résout effectivement le 2e problème.

    Pour le 1er problème, je ne vois pas quoi faire à part ne plus utiliser de tableau adresses => noms pour les envois d'emails dans les Task...

Discussions similaires

  1. Problème avec l'envoi d'email
    Par Cartman.inc dans le forum ASP.NET
    Réponses: 8
    Dernier message: 01/04/2009, 16h07
  2. Réponses: 3
    Dernier message: 09/01/2009, 15h34
  3. Problème envoi de mail depuis une fieldpoint
    Par DDMichel dans le forum LabVIEW
    Réponses: 0
    Dernier message: 28/05/2008, 14h40
  4. Problème d'envoie d'email pour une liste de tâches
    Par Vincent Dieudonné dans le forum SharePoint
    Réponses: 1
    Dernier message: 24/01/2008, 16h22
  5. Problème avec l'envoi d'une trame TCP
    Par fredoBreton dans le forum API, COM et SDKs
    Réponses: 14
    Dernier message: 17/11/2005, 20h19

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