Update copyright
[friendica.git/.git] / src / Object / EMail / IEmail.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2021, the Friendica project
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  *
20  */
21
22 namespace Friendica\Object\EMail;
23
24 use Friendica\Util\Emailer;
25 use JsonSerializable;
26
27 /**
28  * Interface for a single mail, which can be send through Emailer::send()
29  *
30  * @see Emailer::send()
31  */
32 interface IEmail extends JsonSerializable
33 {
34         /**
35          * Gets the senders name for this email
36          *
37          * @return string
38          */
39         function getFromName();
40
41         /**
42          * Gets the senders email address for this email
43          *
44          * @return string
45          */
46         function getFromAddress();
47
48         /**
49          * Gets the UID of the sender of this email
50          *
51          * @return int|null
52          */
53         function getRecipientUid();
54
55         /**
56          * Gets the reply-to address for this email
57          *
58          * @return string
59          */
60         function getReplyTo();
61
62         /**
63          * Gets the senders email address
64          *
65          * @return string
66          */
67         function getToAddress();
68
69         /**
70          * Gets the subject of this email
71          *
72          * @return string
73          */
74         function getSubject();
75
76         /**
77          * Gets the message body of this email (either html or plaintext)
78          *
79          * @param boolean $plain True, if returned as plaintext
80          *
81          * @return string
82          */
83         function getMessage(bool $plain = false);
84
85         /**
86          * Gets the additional mail header array
87          *
88          * @return string[][]
89          */
90         function getAdditionalMailHeader();
91
92         /**
93          * Gets the additional mail header as string - EOL separated
94          *
95          * @return string
96          */
97         function getAdditionalMailHeaderString();
98
99         /**
100          * Returns the current email with a new recipient
101          *
102          * @param string $address The email of the recipient
103          * @param int    $uid   The (optional) UID of the recipient for further infos
104          *
105          * @return static
106          */
107         function withRecipient(string $address, int $uid);
108
109         /**
110          * @param string $plaintext a new plaintext message for this email
111          * @param string $html      a new html message for this email (optional)
112          *
113          * @return static
114          */
115         function withMessage(string $plaintext, string $html = null);
116
117         /**
118          * @return string
119          */
120         function __toString();
121 }