Trimiterea de e-mail-uri dintr-o aplicaţie web este o sarcină foarte frecventă. Dacă doriţi să trimiteţi un singur mesaj de poştă electronică sau sute , puteţi face totul dintr-un singur fişier bath sau printr-o comanda. Aici sunt câteva modalităţi pentru a face aceasta.
Primul pas al acestei sarcini este partea de configurare: toate configurările trebuie să fie făcute în dosarul factories.yml. Acolo, puteţi seta două aspecte ale mail-ului: strategia de livrare şi cea de transport al mesajelor.
Strategia de livrare are următoarele opţiuni de valori :
- timp real: transmiterea mesajului direct
- spool: folosind o listă de aşteptare
- single_address: trimiterea de emailuri la o anumită adresă (pe un mediu de dev)
- none: e-mail nu este trimis (utilă pe un mediu de testare)
De transport – Swift Mailer suporta 3 tipuri de transporturi (sau căi de trimitere ale mesajelor) :
- SMTP: permite autentificarea şi criptarea (utilizări Swift_SmtpTransport clasa)
- Sendmail: utilizând un MTA locale, cum ar fi Sendmail
- Mail: e-mail similare ca PHP indigen () funcţie
#/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
Accesarea Mailer într-un fişier batch este posibilă prin metoda getMailer proxy (). Deci, într-un fişier batch, Symfony Mailer pot fi accesate în acest fel:
sfContext::getInstance()->getMailer()->composeAndSend('from@example.com', 'to@example.com', 'Subject 1st email', 'Body: my first email form command line');
Dacă aveţi nevoie pentru a crea mesaje mai complexe, sfMailer de clasă oferă acces la toate functiile SwiftMailer avantajos, cum ar fi email-uri multipart, echipament, multi-beneficiari, etc.
Luaţi în considerare următorul exemplu cu un mesaj multipart venit dintr-unul parţial:
#/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);
Acum, tot ce trebuie să faceţi este să numiţi acest fişier batch din linia de comanda dvs.:
$ php batch_file.php
şi puteţi verifica inbox-ul.
Autor
Crina Stranici
