ReactPHP async SMTP client to send a emails like php mail(). Simple UTF-8 text/plain messages out-of-the-box.
$loop = \React\EventLoop\Factory::create();
$smtp = new \Shuchkin\ReactSMTP\Client( $loop ); // localhost:25
$smtp->send('[email protected]', '[email protected]', 'Test ReactPHP mailer', 'Hello, Sergey!')->then(
function() {
echo 'Message sent'.PHP_EOL;
},
function ( \Exception $ex ) {
echo 'SMTP error '.$ex->getCode().' '.$ex->getMessage().PHP_EOL;
}
);
$loop->run();
$loop = \React\EventLoop\Factory::create();
$smtp = new \Shuchkin\ReactSMTP\Client( $loop, 'tls://smtp.gmail.com:465', '[email protected]','password' );
$recipients = ['[email protected]','[email protected]'];
foreach( $recipients as $to ) {
$smtp->send('[email protected]', $to, 'Test ReactPHP mailer', 'Hello, Sergey!')->then(
function() use ( $to ) {
echo 'Message to '.$to.' sent via Google SMTP'.PHP_EOL;
},
function ( \Exception $ex ) use ( $to ) {
echo 'Message to '.$to.' not sent: '.$ex->getMessage().PHP_EOL;
}
);
}
$loop->run();
Google limit for personal SMTP 99 messages per 24 hours.
See https://github.com/shuchkin/simplemail
$ composer require shuchkin/simplemail
$smtp = new \Shuchkin\ReactSMTP\Client( $loop, 'example.com:25', 'username', 'password' );
// setup fabric
$sm = new \Shuchkin\SimpleMail();
$sm->setFrom( '[email protected]' );
$sm->setTransport( function ( \Shuchkin\SimpleMail $m, $encoded ) use ( $smtp ) {
$smtp->send( $m->getFromEmail(), $encoded['to'], $encoded['subject'], $encoded['message'], $encoded['headers'] )
->then(
function () {
echo "\r\nSent mail";
},
function ( \Exception $ex ) {
echo "\r\n" . $ex->getMessage();
}
);
});
// send mail
$sm->to( ['[email protected]', '[email protected]'] )
->setSubject('Async mail with ReactPHP')
->setText('Async mail sending perfect! See postcard')
->attach('image/postcard.jpg')
->send();
The recommended way to install this library is through Composer. New to Composer?
This will install the latest supported version:
$ composer require shuchkin/react-smtp-client
0.2 (2020-02-19) - basic UTF-8 text/plain messages out-of-the-box, ReactPHP actual versions in composer.json
0.1.1 (2019-03-12) - Initial release