Index: trac/wiki/parser.py
===================================================================
--- trac/wiki/parser.py	(revision 6658)
+++ trac/wiki/parser.py	(working copy)
@@ -21,6 +21,7 @@
 import re
 
 from trac.core import *
+from trac.notification import EMAIL_LOOKALIKE_PATTERN
 
 class WikiParser(Component):
     """wiki subsystem dedicated to the Wiki text parsing."""
@@ -73,7 +74,7 @@
 
     _post_rules = [
         # e-mails
-        r"(?P<email>\w[\w.]+@\w[\w.]+\w)",
+        r"(?P<email>%s)" % EMAIL_LOOKALIKE_PATTERN,
         # > ...
         r"(?P<citation>^(?P<cdepth>>(?: *>)*))",
         # &, < and > to &amp;, &lt; and &gt;
Index: trac/notification.py
===================================================================
--- trac/notification.py	(revision 6658)
+++ trac/notification.py	(working copy)
@@ -24,11 +24,11 @@
 from trac.core import *
 from trac.util.text import CRLF
 from trac.util.translation import _
-from trac.web.chrome import Chrome
 
 MAXHEADERLEN = 76
+EMAIL_LOOKALIKE_PATTERN = (r"[a-zA-Z0-9.'=+-]+" '@'
+                            '(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}')
 
-
 class NotificationSystem(Component):
 
     smtp_enabled = BoolOption('notification', 'smtp_enabled', 'false',
@@ -117,6 +117,7 @@
         self.config = env.config
         self.db = env.get_db_cnx()
 
+        from trac.web.chrome import Chrome
         self.template = Chrome(self.env).load_template(self.template_name,
                                                        method='text')
         # FIXME: actually, we would need a Context with a different
@@ -166,9 +167,10 @@
     addrsep_re = re.compile(r'[;\s,]+')
 
     def __init__(self, env):
+        global EMAIL_LOOKALIKE_PATTERN
         Notify.__init__(self, env)
 
-        addrfmt = r'[\w\d_\.\-\+=]+\@(?:(?:[\w\d\-])+\.)+(?:[\w\d]{2,4})'
+        addrfmt = EMAIL_LOOKALIKE_PATTERN
         admit_domains = self.env.config.get('notification', 'admit_domains')
         if admit_domains:
             pos = addrfmt.find('@')

