Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/createaccount.pt
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/createaccount.pt	(revision 12517)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/createaccount.pt	(revision 12521)
@@ -16,4 +16,5 @@
     </tbody>
   </table>
+  <br />
   <p i18n:translate="">
     A customer record will be created and
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/requestpw.pt
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/requestpw.pt	(revision 12517)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/requestpw.pt	(revision 12521)
@@ -16,4 +16,5 @@
     </tbody>
   </table>
+  <br />
   <p i18n:translate="">
     Your customer record will be looked up and
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py	(revision 12517)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py	(revision 12521)
@@ -30,5 +30,6 @@
 
 from waeup.ikoba.customers.vocabularies import (
-    contextual_reg_num_source, GenderSource, nats_vocab,
+    contextual_reg_num_source, contextual_email_source,
+    GenderSource, nats_vocab,
     ConCatProductSource, CustomerDocumentSource,
     ProductOptionSourceFactory)
@@ -125,8 +126,9 @@
         )
 
-    email = schema.ASCIILine(
+    email = TextLineChoice(
         title = _(u'Email'),
         required = False,
         constraint=validate_email,
+        source = contextual_email_source,
         )
 
@@ -195,5 +197,5 @@
         )
 
-    email = schema.ASCIILine(
+    email = schema.TextLine(
         title = _(u'Email Address'),
         required = True,
@@ -223,8 +225,9 @@
         )
 
-    email = schema.ASCIILine(
-        title = _(u'Email Address'),
-        required = True,
+    email = TextLineChoice(
+        title = _(u'Email'),
+        required = False,
         constraint=validate_email,
+        source = contextual_email_source,
         )
 
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data.csv
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data.csv	(revision 12517)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data.csv	(revision 12521)
@@ -1,10 +1,10 @@
 customer_id,firstname,lastname,reg_number,date_of_birth,,phone,sex,state
 X666666,Aaren,Pieri,1,1990-01-02,aa@aa.ng,1234,M,requested
-Y777777,Claus,Finau,2,1990-01-03,aa@aa.ng,1234,m,requested
-,Susann,Berson,3,1990-01-04,aa@aa.ng,1234,F,requested
-,Else,Mueller,4,1990-01-05,aa@aa.ng,1234,f,approved
-X888888,Alfons,Meier,5,1990-01-02,aa@aa.ng,1234,m,requested
-X999999,Herbert,Mueller,6,1990-01-02,aa@aa.ng,1234,m,approved
-X111111,Fabian,Riester,7,1990-01-02,aa@aa.ng,1234,m,requested
-X222222,Thomas,Kinderman,8,1990-01-02,aa@aa.ng,1234,m,requested
-X333333,Paula,Schall,9,1990-01-02,aa@aa.ng,1234,m,approved
+Y777777,Claus,Finau,2,1990-01-03,bb@aa.ng,1234,m,requested
+,Susann,Berson,3,1990-01-04,cc@aa.ng,1234,F,requested
+,Else,Mueller,4,1990-01-05,dd@aa.ng,1234,f,approved
+X888888,Alfons,Meier,5,1990-01-02,ee@aa.ng,1234,m,requested
+X999999,Herbert,Mueller,6,1990-01-02,ff@aa.ng,1234,m,approved
+X111111,Fabian,Riester,7,1990-01-02,gg@aa.ng,1234,m,requested
+X222222,Thomas,Kinderman,8,1990-01-02,hh@aa.ng,1234,m,requested
+X333333,Paula,Schall,9,1990-01-02,ii@aa.ng,1234,m,approved
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_duplicates.csv
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_duplicates.csv	(revision 12517)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_duplicates.csv	(revision 12521)
@@ -1,5 +1,6 @@
 customer_id,firstname,lastname,reg_number,date_of_birth,email,phone,password,sex,state
 A123456,Aaren,Pieri,1,1990-01-02#,aa@aa.ng,1234,mypw1,m,requested
-C123456,Aaren,Berson,2,1990-01-04,aa@aa.ng,1234,mypw1,m,approved
-F123456,Frank,Meyer,1,1990-01-06,aa@aa.ng,1234,,m,
-A123456,Uli,Schulz,3,1990-01-07,aa@aa.ng,1234,,m,
+C123456,Aaren,Berson,2,1990-01-04,bb@aa.ng,1234,mypw1,m,approved
+F123456,Frank,Meyer,1,1990-01-06,cc@aa.ng,1234,,m,
+A123456,Uli,Schulz,3,1990-01-07,dd@aa.ng,1234,,m,
+A234567,Berta,Pieri,4,1991-01-07,aa@aa.ng,1234,,m,
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py	(revision 12517)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py	(revision 12521)
@@ -139,5 +139,5 @@
         customer.date_of_birth = datetime.date(1981, 2, 4)
         #customer.sex = 'f'
-        customer.email = 'anna@sample.com'
+        customer.email = u'anna@sample.com'
         customer.phone = u'+234-123-12345'
         customer.notice = u'Some notice\nin lines.'
@@ -279,11 +279,11 @@
             self.csv_file_duplicates, CUSTOMER_HEADER_FIELDS_DUPLICATES)
         content = open(fail_file).read()
-        self.assertEqual(num_warns,2)
+        self.assertEqual(num_warns,3)
         self.assertEqual(
             content,
             'reg_number,password,firstname,lastname,sex,phone,state,date_of_birth,customer_id,email,--ERRORS--\r\n'
-            '1,,Frank,Meyer,m,1234,,1990-01-06,F123456,aa@aa.ng,reg_number: Invalid input\r\n'
-            '3,,Uli,Schulz,m,1234,,1990-01-07,A123456,aa@aa.ng,This object already exists. Skipping.\r\n'
-
+            '1,,Frank,Meyer,m,1234,,1990-01-06,F123456,cc@aa.ng,reg_number: Invalid input\r\n'
+            '3,,Uli,Schulz,m,1234,,1990-01-07,A123456,dd@aa.ng,This object already exists. Skipping.\r\n'
+            '4,,Berta,Pieri,m,1234,,1991-01-07,A234567,aa@aa.ng,email: Invalid input\r\n'
             )
         shutil.rmtree(os.path.dirname(fin_file))
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12517)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12521)
@@ -127,5 +127,5 @@
         customer.reg_number = u'123'
         customer.sex = u'm'
-        customer.email = 'aa@aa.ng'
+        customer.email = u'aa@aa.ng'
         customer.phone = u'1234'
         customer.date_of_birth = date(1981, 2, 4)
@@ -210,5 +210,5 @@
         self.browser.getControl(name="form.reg_number").value = '123'
         self.browser.getControl("Create customer record").click()
-        self.assertTrue('Registration number exists already'
+        self.assertTrue('Registration number does exist.'
             in self.browser.contents)
         self.browser.getControl(name="form.reg_number").value = '1234'
@@ -220,5 +220,5 @@
         self.browser.getControl(name="form.reg_number").value = '123'
         self.browser.getControl("Save").click()
-        self.assertMatches('...Registration number exists...',
+        self.assertMatches('...Registration number does exist...',
                            self.browser.contents)
 
@@ -358,5 +358,5 @@
         self.browser.getControl("Send message now").click()
         self.assertTrue('An smtp server error occurred' in self.browser.contents)
-        self.customer.email = 'xx@yy.zz'
+        self.customer.email = u'xx@yy.zz'
         self.browser.getControl("Send message now").click()
         self.assertTrue('Your message has been sent' in self.browser.contents)
@@ -420,7 +420,7 @@
         open('customers.csv', 'wb').write(
 """firstname,lastname,reg_number,date_of_birth,email,phone,sex,password
-Aaren,Pieri,1,1990-01-02,aa@aa.ng,1234,m,mypwd1
-Claus,Finau,2,1990-01-03,aa@aa.ng,1234,m,mypwd1
-Brit,Berson,2,1990-01-04,aa@aa.ng,1234,m,mypwd1
+Aaren,Pieri,1,1990-01-02,bb@aa.ng,1234,m,mypwd1
+Claus,Finau,2,1990-01-03,cc@aa.ng,1234,m,mypwd1
+Brit,Berson,2,1990-01-04,dd@aa.ng,1234,m,mypwd1
 """)
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
@@ -766,13 +766,15 @@
 
     def test_create_account(self):
-        # Customer with wrong number can't be found.
         self.browser.open('http://localhost/app/createaccount')
         self.browser.getControl(name="form.firstname").value = 'Ruben'
         self.browser.getControl(name="form.lastname").value = 'Gonzales'
+        self.browser.getControl(name="form.email").value = 'aa@aa.ng'
+        self.browser.getControl("Send login credentials").click()
+        # Email address exists.
+        self.assertTrue('Email address does exist.' in self.browser.contents)
         self.browser.getControl(name="form.email").value = 'newcustomer@xx.zz'
         self.browser.getControl("Send login credentials").click()
-        self.assertTrue('Your request was successful.'
-            in self.browser.contents)
-        # ... and  customer can be found in the catalog via the email address
+        self.assertTrue('Your request was successful.' in self.browser.contents)
+        # Customer can be found in the catalog via the email address
         cat = queryUtility(ICatalog, name='customers_catalog')
         results = list(
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py	(revision 12517)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py	(revision 12521)
@@ -62,8 +62,13 @@
 
 class RegNumNotInSource(ValidationError):
-    """Registration number exists already
+    """Registration number does exist.
     """
     # The docstring of ValidationErrors is used as error description
     # by zope.formlib.
+    pass
+
+class EmailNotInSource(ValidationError):
+    """Email address does exist.
+    """
     pass
 
@@ -121,4 +126,13 @@
 directlyProvides(contextual_reg_num_source, IContextSourceBinder)
 
+class EmailSource(RegNumberSource):
+    field_name = 'email'
+    validation_error = EmailNotInSource
+
+def contextual_email_source(context):
+    source = EmailSource(context)
+    return source
+directlyProvides(contextual_email_source, IContextSourceBinder)
+
 
 class ConCatProductSource(BasicContextualSourceFactory):
