1
# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
3
# This program is free software; you can redistribute it and/or
4
# modify it under the terms of the GNU General Public License
5
# as published by the Free Software Foundation; either version 2
6
# of the License, or (at your option) any later version.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
"""Send an acknowledgement of the successful post to the sender.
19
This only happens if the sender has set their AcknowledgePosts attribute.
20
This module must appear after the deliverer in the message pipeline in order
21
to send acks only after successful delivery.
25
from Mailman import mm_cfg
26
from Mailman import Utils
27
from Mailman import Message
28
from Mailman import Errors
29
from Mailman.i18n import _
33
def process(mlist, msg, msgdata):
34
# Extract the sender's address and find them in the user database
35
sender = msgdata.get('original_sender', msg.get_sender())
37
ack = mlist.getMemberOption(sender, mm_cfg.AcknowledgePosts)
40
except Errors.NotAMemberError:
42
# Okay, they want acknowledgement of their post. Give them their original
43
# subject. BAW: do we want to use the decoded header?
44
origsubj = msgdata.get('origsubj', msg.get('subject', _('(no subject)')))
45
# Get the user's preferred language
46
lang = msgdata.get('lang', mlist.getMemberLanguage(sender))
47
# Now get the acknowledgement template
48
realname = mlist.real_name
49
text = Utils.maketext(
51
{'subject' : origsubj,
52
'listname' : realname,
53
'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1),
54
'optionsurl' : mlist.GetOptionsURL(sender, absolute=1),
55
}, lang=lang, mlist=mlist, raw=1)
56
# Craft the outgoing message, with all headers and attributes
57
# necessary for general delivery. Then enqueue it to the outgoing
59
subject = _('%(realname)s post acknowledgement')
60
usermsg = Message.UserNotification(sender, mlist.GetBouncesEmail(),