Envoi d’e-mails à partir d’un fichier batch Symfony 1.4

Envoi d’e-mails à partir d’une application web est une tâche très commune. Si vous souhaitez envoyer un simple email ou des centaines, vous pouvez tout faire à partir d’un seul fichier ou d’un bain de commande. Voici quelques façons de le faire.

La première étape de cette tâche est la configuration: tous les réglages doivent être effectués de fichier factories.yml. Là, vous pouvez définir les deux aspects de messagerie: stratégie de livraison et de transport des messages.

La stratégie de prestation a les valeurs des options suivantes:

  • temps réel: le message directement
  • spool: en utilisant une liste d’attente
  • single_address: envoi de mails à une adresse (l’environnement dev)
  • none: e-mail n’est pas envoyé (utile dans un environnement de test)

Transports – Swift Mailer supporte trois types de transport (ou la manière d’envoyer des messages) :

  • SMTP: permet l’authentification et le chiffrement (utilise Swift_SmtpTransport classe)
  • Sendmail: utilisez un MTA local comme Sendmail
  • Mail: e-mail similaire à PHP natif () la fonction
#/myproject/apps/frontend/config/factories.yml
dev:
  mailer:
    param:
      delivery_strategy: single_address
      delivery_address: your_email

all:
  mailer:
    param:
      transport:
        class: Swift_SmtpTransport
        param:
          host: smtp.gmail.com
          port: 465
          encryption: ssl
          username: your_gmail_account
          password: your_gmail_password

Accéder à l’expéditeur dans un fichier batch est possible grâce à la méthode de remplacement getMailer (). Ainsi, dans un fichier batch, symfony mailer peut être consulté de cette façon:

sfContext::getInstance()->getMailer()->composeAndSend('from@example.com', 'to@example.com', 'Subject 1st email', 'Body: my first email form command line');

Si vous avez besoin pour créer des messages plus complexes, sfMailer classe fournit un accès à tous les avantages des fonctions SwiftMailer, tels que des emails en multipart, pièces jointes, multi-utilisateurs, etc.

Prenons l’exemple suivant avec un message multipart envoye à partir d’un partielle:

#/myproject/apps/frontend/modules/mymodule/batch_file.php

 require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
 $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'dev', true);

// Remove the following lines if you don't use the database layer
 $databaseManager = new sfDatabaseManager($configuration);
 sfContext::createInstance($configuration);

 $message = sfContext::getInstance()->getMailer()->compose();
 $message->setSubject('complex email');
 $message->setTo('to@example.com');
 $message->setFrom('from@example.com');

 $html = sfContext::getInstance()->getController()->getAction('action', 'actionName')->getPartial('module/email_partial');
 $message->setBody($html, 'text/html');
 sfContext::getInstance()->getMailer()->send($message);

Maintenant tout ce que vous avez à faire est d’appeler ce fichier batch a partir de votre ligne de commande:

$ php batch_file.php

et vérifiez votre boîte de réception.

L’auteur

Crina Stranici

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>