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
