gelembjuk / mail
Creates email body and subject from templates using Smarty or Twig and send email with one of supported mailes (PHPMailer, mail() function etc)
Requires
- gelembjuk/logger: 1.*
- gelembjuk/templating: 1.*
This package is not auto-updated.
Last update: 2024-10-30 10:54:36 UTC
README
PHP Package to send email with different mailers without changes in the PHP code and to format email messages using templater (Smarty, Twig).
Installation
Using composer: gelembjuk/mail require: {"gelembjuk/mail": "*"}
Configuration
$formatteroptions = array( 'locale' => '', // optional, add if you need international support 'deflocale' => 'en', // default locale. Optional as well, template from it are used if no in a `locale` 'templateprocessorclass' => null, // if not provided then smarty is used. this is one of classes from Gelembjuk/Templating 'templatecompiledir' => $thisdir.'/email_tmp/', // directory used to store tempopary files of cache engine . It i reuired for Smarty but not needed for Twig 'templatespath' => $thisdir.'/email_templates/' // a base path where email templates and files with subjects are stored ); $maileroptions = array( 'logger' => $logger, // (optional) Logger, instance of Gelembjuk\Logger\FileLogger, 'format' => $formatteroptions, // formatter options // other options related to specified email sending class // next options are only for PHPMailer 'mailsystem' => 'smtp', // for phpmailer it can be smtp or mail 'smtp_host' => 'smtp_host', // aka smtp.gmail.com 'smtp_port' => 25, // aka 587 'smtp_secure' => false, // or true in case of ssl/tls 'smtp_auth' => true, // usually true 'smtp_user' => 'smtp user', // aka your gmail account 'smtp_password' => 'smtp password', // your smtp password (gmail etc) );
Usage
$mailer = new \Gelembjuk\Mail\PHPMailer(); // OR // $mailer = new \Gelembjuk\Mail\PHPNative(); // uses mail() // OR // $mailer = new \Gelembjuk\Mail\NullMail(); // is only for testing, doesn't send only log $mailer->initMailer($maileroptions); $email_data = array( 'user' => 'John Smith', 'activationlink' => 'http://our_site.com/activateaccount/code' ); $mailer->formatAndSendEmail( 'activate', // template name $email_data, 'john_smith@gmail.com', // send to email 'from_email@gmail.com' // send from email );
Templates
In this example a templatespath
must contain 3 files:
activate.htm - template for this email,
<h3>Hello {$user}</h3> <p>Click the link <a href="{$activationlink}">{$activationlink}</a></p>
out_default.htm - common out
template used fro all emails (aka common header/footer for all emails)
<table> <tr><td>Header. Company name, logo etc</td></tr> <tr><td>{$EMAILCONTENT}</td></tr> <tr><td>Footer. Contacts, signature etc</td></tr> </table>
subjects.xml - contains text of email subjects for templates
<?xml version="1.0" encoding="utf-8"?> <templates> <activate> <subject>Activate your new account</subject> <description>This email is sent to a user when new account is registered</description> </activate> </templates>
Different template engines
Now Smarty and Twig can be used. See https://github.com/Gelembjuk/templating for more information. More supported engines can be added later.
Internationalization
See the test2.php in examples folder in this project. It shows how to organize structure of locales folders.
// send email with german template $mailer->setFormatterOption('locale','de'); $mailer->formatAndSendEmail( 'activate', // template name $email_data, 'john_smith@gmail.com', // send to email 'from_email@gmail.com' // send from email ); // send same email with french template $mailer->setFormatterOption('locale','fr'); $mailer->formatAndSendEmail( 'activate', // template name $email_data, 'john_smith@gmail.com', // send to email 'from_email@gmail.com' // send from email );
Author
Roman Gelembjuk (@gelembjuk)