Somebody with the e-mail address <liangmeiairen\uff20163> has subscribed to some Wiki pages and breaks them in several ways: * Mail notifications are disabled. I no longer receive mails when somebody edits such a page. * Editing the pages gives a colourful traceback. Happens with e.g.: http://fedoraproject.org/wiki/Extras/FC5Status --> --> UnicodeEncodeError'ascii' codec can't encode character u'\uff20' in position 22: ordinal not in range(128) Please include this information in your bug reports!: Python Python 2.3.4: /usr/bin/python Linux fpserv.linux.duke.edu 2.6.9-42.0.2.ELsmp #1 SMP Wed Aug 23 13:38:27 BST 2006 x86_64 MoinMoin Release 1.3.4 [Revision 1.3.4 release] Sat Oct 7 19:02:05 2006 A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred. /usr/lib/python2.3/site-packages/MoinMoin/request.py in run(self=<MoinMoin.request.RequestCGI instance>) 916 else: 917 try: 918 cgitb.Hook(file=self).handle(saved_exc) 919 # was: cgitb.handler() 920 except: cgitb = <module 'MoinMoin.support.cgitb' from '/usr/lib/python2.3/site-packages/MoinMoin/support/cgitb.pyc'>, cgitb.Hook = <class MoinMoin.support.cgitb.Hook>, file undefined, self = <MoinMoin.request.RequestCGI instance>, ).handle undefined, saved_exc = (<class exceptions.UnicodeEncodeError>, <exceptions.UnicodeEncodeError instance>, <traceback object>) /usr/lib/python2.3/site-packages/MoinMoin/wikiaction.py in do_savepage(pagename=u'Extras/FC5Status', request=<MoinMoin.request.RequestCGI instance>) 628 except pg.SaveError, msg: 629 # msg contain a unicode string 630 savemsg = unicode(msg) 631 632 # Send new page after save or after unsuccessful conflict merge. savemsg undefined, unicode undefined, msg undefined /usr/lib/python2.3/site-packages/MoinMoin/PageEditor.py in saveText(self=<MoinMoin.PageEditor.PageEditor instance>, newtext=u'== Fedora Extras for FC5 repository status ==\n\n ...at.com||perl-Razor-Agent||||\n----\nCategoryExtras\n', rev=184, **kw={'comment': u'sysprof - 1.0.3-4.fc5.ppc and amarok - 1.4.1-3.fc5.x86_64 will be gone', 'trivial': 0}) 940 # send notification mails 941 if self.request.cfg.mail_smarthost: 942 msg = msg + self._notifySubscribers(comment, trivial) 943 944 # remove lock (forcibly if we were allowed to break it by the UI) msg = u'Thank you for your changes. Your attention to detail is appreciated.', self = <MoinMoin.PageEditor.PageEditor instance>, self._notifySubscribers = <bound method PageEditor._notifySubscribers of <MoinMoin.PageEditor.PageEditor instance>>, comment = u'sysprof - 1.0.3-4.fc5.ppc and amarok - 1.4.1-3.fc5.x86_64 will be gone', trivial = 0 /usr/lib/python2.3/site-packages/MoinMoin/PageEditor.py in _notifySubscribers(self=<MoinMoin.PageEditor.PageEditor instance>, comment=u'sysprof - 1.0.3-4.fc5.ppc and amarok - 1.4.1-3.fc5.x86_64 will be gone', trivial=0) 580 emails = map(lambda u: u.email, subscribers[lang]) 581 names = map(lambda u: u.name, subscribers[lang]) 582 mailok, status = self._sendNotification(comment, emails, lang, revisions, trivial) 583 recipients = ", ".join(names) 584 results.append(_('[%(lang)s] %(recipients)s: %(status)s') % { mailok = 1, status = u'Mail sent OK', self = <MoinMoin.PageEditor.PageEditor instance>, self._sendNotification = <bound method PageEditor._sendNotification of <MoinMoin.PageEditor.PageEditor instance>>, comment = u'sysprof - 1.0.3-4.fc5.ppc and amarok - 1.4.1-3.fc5.x86_64 will be gone', emails = [u'tchung@xxxxxxxxxxxxxxxxx', u'ville.skytta@xxxxxx', u'fedora@xxxxxxxxxxxxx', u'rdieter@xxxxxxxxxxxx', u'ivazquez@xxxxxxxxxxxx', u'Christian.Iseli@xxxxxxxx', u'sundaram@xxxxxxxxxx', u'nman64@xxxxxxxxxxxxxxxxx', u'michael@xxxxxxxxxxx', u'liangmeiairen\uff20163 .com', u'flores.enrique@xxxxxxxxx'], lang = 'en', revisions = [184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, ...], trivial = 0 /usr/lib/python2.3/site-packages/MoinMoin/PageEditor.py in _sendNotification(self=<MoinMoin.PageEditor.PageEditor instance>, comment=u'sysprof - 1.0.3-4.fc5.ppc and amarok - 1.4.1-3.fc5.x86_64 will be gone', emails=[u'tchung@xxxxxxxxxxxxxxxxx', u'ville.skytta@xxxxxx', u'fedora@xxxxxxxxxxxxx', u'rdieter@xxxxxxxxxxxx', u'ivazquez@xxxxxxxxxxxx', u'Christian.Iseli@xxxxxxxx', u'sundaram@xxxxxxxxxx', u'nman64@xxxxxxxxxxxxxxxxx', u'michael@xxxxxxxxxxx', u'liangmeiairen\uff20163 .com', u'flores.enrique@xxxxxxxxx'], email_lang='en', revisions=[184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, ...], trivial=0) 556 'username': self.uid_override or user.getUserIdentification(self.request), 557 }, 558 mailBody, mail_from=self.cfg.mail_from) 559 560 mailBody = u'Dear Wiki user,\n\nYou have subscribed to a wiki p...sion independent, disttagless, noarch packages):\n', mail_from undefined, self = <MoinMoin.PageEditor.PageEditor instance>, self.cfg = <wikiconfig.Config instance>, self.cfg.mail_from = 'fedorawiki-noreply@xxxxxxxxxxxxxxxxx' /usr/lib/python2.3/site-packages/MoinMoin/util/mail.py in sendmail(request=<MoinMoin.request.RequestCGI instance>, to=[u'tchung@xxxxxxxxxxxxxxxxx', u'ville.skytta@xxxxxx', u'fedora@xxxxxxxxxxxxx', u'rdieter@xxxxxxxxxxxx', u'ivazquez@xxxxxxxxxxxx', u'Christian.Iseli@xxxxxxxx', u'sundaram@xxxxxxxxxx', u'nman64@xxxxxxxxxxxxxxxxx', u'michael@xxxxxxxxxxx', u'liangmeiairen\uff20163 .com', u'flores.enrique@xxxxxxxxx'], subject=u'[Fedora Project Wiki] Update of "Extras/FC5Status" by MichaelSchwendt', text='Dear Wiki user,\r\n\r\nYou have subscribed to a wiki...ion independent, disttagless, noarch packages):\r\n', **kw={'mail_from': 'fedorawiki-noreply@xxxxxxxxxxxxxxxxx'}) 85 return (0, str(e)) 86 except (os.error, socket.error), e: 87 return (0, _("Connection to mailserver '%(server)s' failed: %(reason)s") % { 88 'server': cfg.mail_smarthost, 89 'reason': str(e) _ = <function <lambda>>, cfg = <wikiconfig.Config instance>, cfg.mail_smarthost = 'mail.linux.duke.edu', str undefined, e undefined /usr/lib64/python2.3/smtplib.py in sendmail(self=<smtplib.SMTP instance>, from_addr='fedorawiki-noreply@xxxxxxxxxxxxxxxxx', to_addrs=[u'tchung@xxxxxxxxxxxxxxxxx', u'ville.skytta@xxxxxx', u'fedora@xxxxxxxxxxxxx', u'rdieter@xxxxxxxxxxxx', u'ivazquez@xxxxxxxxxxxx', u'Christian.Iseli@xxxxxxxx', u'sundaram@xxxxxxxxxx', u'nman64@xxxxxxxxxxxxxxxxx', u'michael@xxxxxxxxxxx', u'liangmeiairen\uff20163 .com', u'flores.enrique@xxxxxxxxx'], msg='Content-Type: text/plain; charset="utf-8"\nMIME-V...LCBkaXN0dGFnbGVzcywgbm9hcmNoIHBhY2thZ2VzKToNCg==\n', mail_options=[], rcpt_options=[]) 679 to_addrs = [to_addrs] 680 for each in to_addrs: 681 (code,resp)=self.rcpt(each, rcpt_options) 682 if (code != 250) and (code != 251): 683 senderrs[each]=(code,resp) code = 250, resp = 'Ok', self = <smtplib.SMTP instance>, self.rcpt = <bound method SMTP.rcpt of <smtplib.SMTP instance>>, each = u'liangmeiairen\uff20163 .com', rcpt_options = [] /usr/lib64/python2.3/smtplib.py in rcpt(self=<smtplib.SMTP instance>, recip=u'liangmeiairen\uff20163 .com', options=[]) 462 if options and self.does_esmtp: 463 optionlist = ' ' + ' '.join(options) 464 self.putcmd("rcpt","TO:%s%s" % (quoteaddr(recip),optionlist)) 465 return self.getreply() 466 self = <smtplib.SMTP instance>, self.putcmd = <bound method SMTP.putcmd of <smtplib.SMTP instance>>, global quoteaddr = <function quoteaddr>, recip = u'liangmeiairen\uff20163 .com', optionlist = '' /usr/lib64/python2.3/smtplib.py in putcmd(self=<smtplib.SMTP instance>, cmd='rcpt', args=u'TO:<liangmeiairen\uff20163>') 323 else: 324 str = '%s %s%s' % (cmd, args, CRLF) 325 self.send(str) 326 327 def getreply(self): self = <smtplib.SMTP instance>, self.send = <bound method SMTP.send of <smtplib.SMTP instance>>, str = u'rcpt TO:<liangmeiairen\uff20163>\r\n' /usr/lib64/python2.3/smtplib.py in send(self=<smtplib.SMTP instance>, str=u'rcpt TO:<liangmeiairen\uff20163>\r\n') 313 except socket.error: 314 self.close() 315 raise SMTPServerDisconnected('Server not connected') 316 else: 317 raise SMTPServerDisconnected('please run connect() first') global SMTPServerDisconnected = <class smtplib.SMTPServerDisconnected> /srv/web/wiki/<string> in sendall(self=<socket._socketobject object>, *args=(u'rcpt TO:<liangmeiairen\uff20163>\r\n',)) UnicodeEncodeError: 'ascii' codec can't encode character u'\uff20' in position 22: ordinal not in range(128) __doc__ = 'Unicode encoding error.' __getitem__ = <bound method UnicodeEncodeError.__getitem__ of <exceptions.UnicodeEncodeError instance>> __init__ = <bound method UnicodeEncodeError.__init__ of <exceptions.UnicodeEncodeError instance>> __module__ = 'exceptions' __str__ = <bound method UnicodeEncodeError.__str__ of <exceptions.UnicodeEncodeError instance>> args = ('ascii', u'rcpt TO:<liangmeiairen\uff20163>\r\n', 22, 23, 'ordinal not in range(128)') encoding = 'ascii' end = 23 object = u'rcpt TO:<liangmeiairen\uff20163>\r\n' reason = 'ordinal not in range(128)' start = 22