1*269d5ff4SAndreas Gohr<?php namespace Tx; 2*269d5ff4SAndreas Gohr/***************************************************\ 3*269d5ff4SAndreas Gohr * 4*269d5ff4SAndreas Gohr * Mailer (https://github.com/txthinking/Mailer) 5*269d5ff4SAndreas Gohr * 6*269d5ff4SAndreas Gohr * A lightweight PHP SMTP mail sender. 7*269d5ff4SAndreas Gohr * Implement RFC0821, RFC0822, RFC1869, RFC2045, RFC2821 8*269d5ff4SAndreas Gohr * 9*269d5ff4SAndreas Gohr * Support html body, don't worry that the receiver's 10*269d5ff4SAndreas Gohr * mail client can't support html, because Mailer will 11*269d5ff4SAndreas Gohr * send both text/plain and text/html body, so if the 12*269d5ff4SAndreas Gohr * mail client can't support html, it will display the 13*269d5ff4SAndreas Gohr * text/plain body. 14*269d5ff4SAndreas Gohr * 15*269d5ff4SAndreas Gohr * Create Date 2012-07-25. 16*269d5ff4SAndreas Gohr * Under the MIT license. 17*269d5ff4SAndreas Gohr * 18*269d5ff4SAndreas Gohr \***************************************************/ 19*269d5ff4SAndreas Gohr 20*269d5ff4SAndreas Gohruse Psr\Log\LoggerInterface; 21*269d5ff4SAndreas Gohruse \Tx\Mailer\Message; 22*269d5ff4SAndreas Gohruse \Tx\Mailer\SMTP; 23*269d5ff4SAndreas Gohr 24*269d5ff4SAndreas Gohr/** 25*269d5ff4SAndreas Gohr * Class Mailer 26*269d5ff4SAndreas Gohr * 27*269d5ff4SAndreas Gohr * This class provides the Mailer public methods for backwards compatibility, but it is recommended 28*269d5ff4SAndreas Gohr * that you use the Tx\Mailer\SMTP and Tx\Mailer\Message classes going forward 29*269d5ff4SAndreas Gohr * 30*269d5ff4SAndreas Gohr * @package Tx 31*269d5ff4SAndreas Gohr */ 32*269d5ff4SAndreas Gohrclass Mailer{ 33*269d5ff4SAndreas Gohr /** 34*269d5ff4SAndreas Gohr * SMTP Class 35*269d5ff4SAndreas Gohr * @var SMTP 36*269d5ff4SAndreas Gohr */ 37*269d5ff4SAndreas Gohr protected $smtp; 38*269d5ff4SAndreas Gohr 39*269d5ff4SAndreas Gohr /** 40*269d5ff4SAndreas Gohr * Mail Message 41*269d5ff4SAndreas Gohr * @var Message 42*269d5ff4SAndreas Gohr */ 43*269d5ff4SAndreas Gohr protected $message; 44*269d5ff4SAndreas Gohr 45*269d5ff4SAndreas Gohr /** 46*269d5ff4SAndreas Gohr * construct function 47*269d5ff4SAndreas Gohr */ 48*269d5ff4SAndreas Gohr public function __construct(LoggerInterface $logger=null){ 49*269d5ff4SAndreas Gohr $this->smtp = new SMTP($logger); 50*269d5ff4SAndreas Gohr $this->message = new Message(); 51*269d5ff4SAndreas Gohr } 52*269d5ff4SAndreas Gohr 53*269d5ff4SAndreas Gohr /** 54*269d5ff4SAndreas Gohr * set server and port 55*269d5ff4SAndreas Gohr * @param string $host server 56*269d5ff4SAndreas Gohr * @param int $port port 57*269d5ff4SAndreas Gohr * @param string $secure ssl tls 58*269d5ff4SAndreas Gohr * @return $this 59*269d5ff4SAndreas Gohr */ 60*269d5ff4SAndreas Gohr public function setServer($host, $port, $secure=null){ 61*269d5ff4SAndreas Gohr $this->smtp->setServer($host, $port, $secure); 62*269d5ff4SAndreas Gohr return $this; 63*269d5ff4SAndreas Gohr } 64*269d5ff4SAndreas Gohr 65*269d5ff4SAndreas Gohr /** 66*269d5ff4SAndreas Gohr * auth with server 67*269d5ff4SAndreas Gohr * @param string $username 68*269d5ff4SAndreas Gohr * @param string $password 69*269d5ff4SAndreas Gohr * @return $this 70*269d5ff4SAndreas Gohr */ 71*269d5ff4SAndreas Gohr public function setAuth($username, $password){ 72*269d5ff4SAndreas Gohr $this->smtp->setAuth($username, $password); 73*269d5ff4SAndreas Gohr return $this; 74*269d5ff4SAndreas Gohr } 75*269d5ff4SAndreas Gohr 76*269d5ff4SAndreas Gohr /** 77*269d5ff4SAndreas Gohr * set mail from 78*269d5ff4SAndreas Gohr * @param string $name 79*269d5ff4SAndreas Gohr * @param string $email 80*269d5ff4SAndreas Gohr * @return $this 81*269d5ff4SAndreas Gohr */ 82*269d5ff4SAndreas Gohr public function setFrom($name, $email){ 83*269d5ff4SAndreas Gohr $this->message->setFrom($name, $email); 84*269d5ff4SAndreas Gohr return $this; 85*269d5ff4SAndreas Gohr } 86*269d5ff4SAndreas Gohr 87*269d5ff4SAndreas Gohr /** 88*269d5ff4SAndreas Gohr * set fake mail from 89*269d5ff4SAndreas Gohr * @param string $name 90*269d5ff4SAndreas Gohr * @param string $email 91*269d5ff4SAndreas Gohr * @return $this 92*269d5ff4SAndreas Gohr */ 93*269d5ff4SAndreas Gohr public function setFakeFrom($name, $email){ 94*269d5ff4SAndreas Gohr $this->message->setFakeFrom($name, $email); 95*269d5ff4SAndreas Gohr return $this; 96*269d5ff4SAndreas Gohr } 97*269d5ff4SAndreas Gohr 98*269d5ff4SAndreas Gohr /** 99*269d5ff4SAndreas Gohr * set mail receiver 100*269d5ff4SAndreas Gohr * @param string $name 101*269d5ff4SAndreas Gohr * @param string $email 102*269d5ff4SAndreas Gohr * @return $this 103*269d5ff4SAndreas Gohr */ 104*269d5ff4SAndreas Gohr public function setTo($name, $email){ 105*269d5ff4SAndreas Gohr $this->message->addTo($name, $email); 106*269d5ff4SAndreas Gohr return $this; 107*269d5ff4SAndreas Gohr } 108*269d5ff4SAndreas Gohr 109*269d5ff4SAndreas Gohr /** 110*269d5ff4SAndreas Gohr * add mail receiver 111*269d5ff4SAndreas Gohr * @param string $name 112*269d5ff4SAndreas Gohr * @param string $email 113*269d5ff4SAndreas Gohr * @return $this 114*269d5ff4SAndreas Gohr */ 115*269d5ff4SAndreas Gohr public function addTo($name, $email){ 116*269d5ff4SAndreas Gohr $this->message->addTo($name, $email); 117*269d5ff4SAndreas Gohr return $this; 118*269d5ff4SAndreas Gohr } 119*269d5ff4SAndreas Gohr 120*269d5ff4SAndreas Gohr /** 121*269d5ff4SAndreas Gohr * set mail subject 122*269d5ff4SAndreas Gohr * @param string $subject 123*269d5ff4SAndreas Gohr * @return $this 124*269d5ff4SAndreas Gohr */ 125*269d5ff4SAndreas Gohr public function setSubject($subject){ 126*269d5ff4SAndreas Gohr $this->message->setSubject($subject); 127*269d5ff4SAndreas Gohr return $this; 128*269d5ff4SAndreas Gohr } 129*269d5ff4SAndreas Gohr 130*269d5ff4SAndreas Gohr /** 131*269d5ff4SAndreas Gohr * set mail body 132*269d5ff4SAndreas Gohr * @param string $body 133*269d5ff4SAndreas Gohr * @return $this 134*269d5ff4SAndreas Gohr */ 135*269d5ff4SAndreas Gohr public function setBody($body){ 136*269d5ff4SAndreas Gohr $this->message->setBody($body); 137*269d5ff4SAndreas Gohr return $this; 138*269d5ff4SAndreas Gohr } 139*269d5ff4SAndreas Gohr 140*269d5ff4SAndreas Gohr /** 141*269d5ff4SAndreas Gohr * set mail attachment 142*269d5ff4SAndreas Gohr * @param $name 143*269d5ff4SAndreas Gohr * @param $path 144*269d5ff4SAndreas Gohr * @return $this 145*269d5ff4SAndreas Gohr * @internal param string $attachment 146*269d5ff4SAndreas Gohr */ 147*269d5ff4SAndreas Gohr public function setAttachment($name, $path){ 148*269d5ff4SAndreas Gohr $this->message->addAttachment($name, $path); 149*269d5ff4SAndreas Gohr return $this; 150*269d5ff4SAndreas Gohr } 151*269d5ff4SAndreas Gohr 152*269d5ff4SAndreas Gohr /** 153*269d5ff4SAndreas Gohr * add mail attachment 154*269d5ff4SAndreas Gohr * @param $name 155*269d5ff4SAndreas Gohr * @param $path 156*269d5ff4SAndreas Gohr * @return $this 157*269d5ff4SAndreas Gohr * @internal param string $attachment 158*269d5ff4SAndreas Gohr */ 159*269d5ff4SAndreas Gohr public function addAttachment($name, $path){ 160*269d5ff4SAndreas Gohr $this->message->addAttachment($name, $path); 161*269d5ff4SAndreas Gohr return $this; 162*269d5ff4SAndreas Gohr } 163*269d5ff4SAndreas Gohr 164*269d5ff4SAndreas Gohr /** 165*269d5ff4SAndreas Gohr * Send the message... 166*269d5ff4SAndreas Gohr * @return boolean 167*269d5ff4SAndreas Gohr */ 168*269d5ff4SAndreas Gohr public function send(){ 169*269d5ff4SAndreas Gohr return $this->smtp->send($this->message); 170*269d5ff4SAndreas Gohr } 171*269d5ff4SAndreas Gohr 172*269d5ff4SAndreas Gohr} 173*269d5ff4SAndreas Gohr 174