annotate rhodecode/lib/rcmail/message.py @ 3774:60335b702a00 beta

invalidation: don't create CacheInvalidation records on startup Creating the records early gave an advantage before lightweight was introduced. With lightweight it is no longer necessary. The records will be created on demand anyway and there is no reason to create and maintain them before they are used.
author Mads Kiilerich <madski@unity3d.com>
date Wed, 03 Apr 2013 15:56:12 +0200
parents d95ef6587bca
children 7e5f8c12a3fc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1 from rhodecode.lib.rcmail.response import MailResponse
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
2
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
3 from rhodecode.lib.rcmail.exceptions import BadHeaders
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
4 from rhodecode.lib.rcmail.exceptions import InvalidMessage
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
5
2452
d95ef6587bca fixes #481 rhodecode emails are sent without Date header
Marcin Kuzminski <marcin@python-works.com>
parents: 1904
diff changeset
6
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
7 class Attachment(object):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
8 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
9 Encapsulates file attachment information.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
10
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
11 :param filename: filename of attachment
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
12 :param content_type: file mimetype
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
13 :param data: the raw file data, either as string or file obj
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
14 :param disposition: content-disposition (if any)
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
15 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
16
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
17 def __init__(self,
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
18 filename=None,
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
19 content_type=None,
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
20 data=None,
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
21 disposition=None):
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
22
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
23 self.filename = filename
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
24 self.content_type = content_type
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
25 self.disposition = disposition or 'attachment'
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
26 self._data = data
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
27
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
28 @property
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
29 def data(self):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
30 if isinstance(self._data, basestring):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
31 return self._data
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
32 self._data = self._data.read()
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
33 return self._data
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
34
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
35
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
36 class Message(object):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
37 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
38 Encapsulates an email message.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
39
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
40 :param subject: email subject header
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
41 :param recipients: list of email addresses
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
42 :param body: plain text message
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
43 :param html: HTML message
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
44 :param sender: email sender address
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
45 :param cc: CC list
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
46 :param bcc: BCC list
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
47 :param extra_headers: dict of extra email headers
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
48 :param attachments: list of Attachment instances
1846
349a0ca30a75 Changed default recipients separator for mails to ', '
Marcin Kuzminski <marcin@python-works.com>
parents: 1818
diff changeset
49 :param recipients_separator: alternative separator for any of
349a0ca30a75 Changed default recipients separator for mails to ', '
Marcin Kuzminski <marcin@python-works.com>
parents: 1818
diff changeset
50 'From', 'To', 'Delivered-To', 'Cc', 'Bcc' fields
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
51 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
52
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
53 def __init__(self,
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
54 subject=None,
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
55 recipients=None,
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
56 body=None,
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
57 html=None,
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
58 sender=None,
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
59 cc=None,
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
60 bcc=None,
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
61 extra_headers=None,
1846
349a0ca30a75 Changed default recipients separator for mails to ', '
Marcin Kuzminski <marcin@python-works.com>
parents: 1818
diff changeset
62 attachments=None,
349a0ca30a75 Changed default recipients separator for mails to ', '
Marcin Kuzminski <marcin@python-works.com>
parents: 1818
diff changeset
63 recipients_separator="; "):
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
64
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
65 self.subject = subject or ''
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
66 self.sender = sender
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
67 self.body = body
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
68 self.html = html
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
69
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
70 self.recipients = recipients or []
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
71 self.attachments = attachments or []
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
72 self.cc = cc or []
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
73 self.bcc = bcc or []
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
74 self.extra_headers = extra_headers or {}
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
75
1846
349a0ca30a75 Changed default recipients separator for mails to ', '
Marcin Kuzminski <marcin@python-works.com>
parents: 1818
diff changeset
76 self.recipients_separator = recipients_separator
349a0ca30a75 Changed default recipients separator for mails to ', '
Marcin Kuzminski <marcin@python-works.com>
parents: 1818
diff changeset
77
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
78 @property
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
79 def send_to(self):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
80 return set(self.recipients) | set(self.bcc or ()) | set(self.cc or ())
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
81
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
82 def to_message(self):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
83 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
84 Returns raw email.Message instance.Validates message first.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
85 """
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
86
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
87 self.validate()
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
88
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
89 return self.get_response().to_message()
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
90
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
91 def get_response(self):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
92 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
93 Creates a Lamson MailResponse instance
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
94 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
95
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
96 response = MailResponse(Subject=self.subject,
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
97 To=self.recipients,
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
98 From=self.sender,
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
99 Body=self.body,
1846
349a0ca30a75 Changed default recipients separator for mails to ', '
Marcin Kuzminski <marcin@python-works.com>
parents: 1818
diff changeset
100 Html=self.html,
349a0ca30a75 Changed default recipients separator for mails to ', '
Marcin Kuzminski <marcin@python-works.com>
parents: 1818
diff changeset
101 separator=self.recipients_separator)
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
102
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
103 if self.cc:
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
104 response.base['Cc'] = self.cc
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
105
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
106 for attachment in self.attachments:
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
107
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
108 response.attach(attachment.filename,
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
109 attachment.content_type,
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
110 attachment.data,
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
111 attachment.disposition)
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
112
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
113 response.update(self.extra_headers)
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
114
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
115 return response
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
116
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
117 def is_bad_headers(self):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
118 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
119 Checks for bad headers i.e. newlines in subject, sender or recipients.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
120 """
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
121
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
122 headers = [self.subject, self.sender]
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
123 headers += list(self.send_to)
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
124 headers += self.extra_headers.values()
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
125
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
126 for val in headers:
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
127 for c in '\r\n':
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
128 if c in val:
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
129 return True
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
130 return False
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
131
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
132 def validate(self):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
133 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
134 Checks if message is valid and raises appropriate exception.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
135 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
136
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
137 if not self.recipients:
2452
d95ef6587bca fixes #481 rhodecode emails are sent without Date header
Marcin Kuzminski <marcin@python-works.com>
parents: 1904
diff changeset
138 raise InvalidMessage("No recipients have been added")
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
139
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
140 if not self.body and not self.html:
2452
d95ef6587bca fixes #481 rhodecode emails are sent without Date header
Marcin Kuzminski <marcin@python-works.com>
parents: 1904
diff changeset
141 raise InvalidMessage("No body has been set")
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
142
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
143 if not self.sender:
2452
d95ef6587bca fixes #481 rhodecode emails are sent without Date header
Marcin Kuzminski <marcin@python-works.com>
parents: 1904
diff changeset
144 raise InvalidMessage("No sender address has been set")
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
145
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
146 if self.is_bad_headers():
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
147 raise BadHeaders
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
148
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
149 def add_recipient(self, recipient):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
150 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
151 Adds another recipient to the message.
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
152
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
153 :param recipient: email address of recipient.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
154 """
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
155
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
156 self.recipients.append(recipient)
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
157
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
158 def add_cc(self, recipient):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
159 """
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
160 Adds an email address to the CC list.
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
161
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
162 :param recipient: email address of recipient.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
163 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
164
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
165 self.cc.append(recipient)
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
166
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
167 def add_bcc(self, recipient):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
168 """
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
169 Adds an email address to the BCC list.
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
170
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
171 :param recipient: email address of recipient.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
172 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
173
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
174 self.bcc.append(recipient)
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
175
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
176 def attach(self, attachment):
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
177 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
178 Adds an attachment to the message.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
179
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
180 :param attachment: an **Attachment** instance.
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
181 """
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
182
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
183 self.attachments.append(attachment)