Trimiterea de e-mail-uri dintr-un fişier batch Symfony 1.4

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

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>