summaryrefslogtreecommitdiff
path: root/Mailman/MailCommandHandler.py
diff options
context:
space:
mode:
authorbwarsaw2001-03-02 06:06:03 +0000
committerbwarsaw2001-03-02 06:06:03 +0000
commitfd50f6ba3c52ce475f91f07aef2835cffeada335 (patch)
tree34e027e2aeee676e0027231fa3c593326abd9540 /Mailman/MailCommandHandler.py
parent5edd9afb768e33c51f63ccb519fd965d767221e8 (diff)
downloadmailman-fd50f6ba3c52ce475f91f07aef2835cffeada335.tar.gz
mailman-fd50f6ba3c52ce475f91f07aef2835cffeada335.tar.zst
mailman-fd50f6ba3c52ce475f91f07aef2835cffeada335.zip
Diffstat (limited to 'Mailman/MailCommandHandler.py')
-rw-r--r--Mailman/MailCommandHandler.py38
1 files changed, 23 insertions, 15 deletions
diff --git a/Mailman/MailCommandHandler.py b/Mailman/MailCommandHandler.py
index d6fa29649..fe439ddc0 100644
--- a/Mailman/MailCommandHandler.py
+++ b/Mailman/MailCommandHandler.py
@@ -135,27 +135,26 @@ class MailCommandHandler:
self.__errors = self.__errors + 1
self.AddToResponse(text, trunc=trunc, prefix=prefix)
- def ParseMailCommands(self, msg):
+ def ParseMailCommands(self, msg, msgdata):
# Break any infloops. If this has come from a Mailman server then
# it'll have this header. It's still possible to infloop between two
# servers because there's no guaranteed way to know it came from a
# bot.
if msg['x-beenthere'] or msg['list-id']:
return
- # check the autoresponse stuff
+ # Check the autoresponse stuff
if self.autorespond_requests:
- # TBD: this is a hack and is not safe with respect to errors in
+ # BAW: this is a hack and is not safe with respect to errors in
# the Replybot module. It should be redesigned to work with the
# robust delivery scheme.
from Mailman.Handlers import Replybot
+ # BAW: Replybot doesn't currently support multiple languages
Replybot.process(self, msg, msgdata={'torequest':1})
if self.autorespond_requests == 1:
# Yes, auto-respond and discard
return
subject = msg.get('subject', '')
- sender = msg.get_sender().lower()
- os.environ['LANG'] = self.GetPreferredLanguage(sender)
- sender = sender.split('@')[0]
+ sender = msg.get_sender().lower().split('@')[0]
#
# XXX: why 'orphanage'?
if sender in mm_cfg.LIKELY_BOUNCE_SENDERS:
@@ -268,13 +267,18 @@ the list administrator automatically.'''))
_('Unexpected Mailman error:\n%(tbmsg)s'))
# and send the traceback to the user
responsemsg = Message.UserNotification(
- admin, admin, 'Unexpected Mailman error',
+ admin, admin, _('Unexpected Mailman error'),
_('''\
An unexpected Mailman error has occurred in
MailCommandHandler.ParseMailCommands(). Here is the traceback:
''') + tbmsg)
responsemsg['X-No-Archive'] = 'yes'
+ lang = msgdata.get(
+ 'lang',
+ mlist.GetPreferredLanguage(admin))
+ responsemsg.addheader('Content-Type', 'text/plain',
+ charset=Utils.GetCharSet(lang))
responsemsg.send(self)
break
# send the response
@@ -301,10 +305,14 @@ The following is a detailed description of the problems.
# send the response
realname = self.real_name
subject = _('Mailman results for %(realname)s')
+ sender = msg.get_sender()
+ lang = msgdata.get('lang', mlist.GetPreferredLanguage(sender))
responsemsg = Message.UserNotification(msg.get_sender(),
self.GetRequestEmail(),
subject,
self.__respbuf)
+ responsemsg.addheader('Content-Type', 'text/plain',
+ charset=Utils.GetCharSet(lang))
responsemsg.send(self)
self.__respbuf = ''
self.__errors = 0
@@ -314,7 +322,7 @@ The following is a detailed description of the problems.
if len(args) not in [0,2]:
self.AddError(_("Usage: password [<oldpw> <newpw>]"))
return
- sender = mail.GetSender()
+ sender = mail.get_sender()
if len(args) == 0:
# Mail user's password to user
user = self.FindUser(sender)
@@ -342,9 +350,9 @@ The following is a detailed description of the problems.
self.AddError(_("Bad user - %(sender)s."), trunc=0)
def ProcessOptionsCmd(self, args, cmd, mail):
- sender = self.FindUser(mail.GetSender())
+ sender = self.FindUser(mail.get_sender())
if not sender:
- origsender = mail.GetSender()
+ origsender = mail.get_sender()
self.AddError(_("%(origsender)s is not a member of the list."),
trunc=0)
return
@@ -470,7 +478,7 @@ The following is a detailed description of the problems.
"to get info for all the lists."))
return
- if self.private_roster and not self.IsMember(mail.GetSender()):
+ if self.private_roster and not self.IsMember(mail.get_sender()):
self.AddError(_("Private list: only members may see info."))
return
@@ -498,7 +506,7 @@ background and instructions for subscribing to and using it, visit:
if self.private_roster == 2:
self.AddError(_("Private list: No one may see subscription list."))
return
- if self.private_roster and not self.IsMember(mail.GetSender()):
+ if self.private_roster and not self.IsMember(mail.get_sender()):
self.AddError(_("Private list: only members may see list "
"of subscribers."))
return
@@ -539,7 +547,7 @@ background and instructions for subscribing to and using it, visit:
if len(args) == 2:
addr = args[1]
else:
- addr = mail.GetSender()
+ addr = mail.get_sender()
try:
self.ConfirmUserPassword(addr, args[0])
self.DeleteMember(addr, "mailcmd")
@@ -590,10 +598,10 @@ background and instructions for subscribing to and using it, visit:
if not password:
password = Utils.MakeRandomPassword()
if not address:
- subscribe_address = Utils.LCDomain(mail.GetSender())
+ subscribe_address = Utils.LCDomain(mail.get_sender())
else:
subscribe_address = address
- remote = mail.GetSender()
+ remote = mail.get_sender()
try:
self.AddMember(subscribe_address, password, digest, remote)
self.Save()