xref: /plugin/smtp/subtree/txtthinking/Mailer/src/Mailer.php (revision 269d5ff46c37c7e45f82c18bc0cc45d491b48a4a)
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