Here is what I do have in *db.py* already: mail=auth.settings.mailer mail.settings.server = settings.email_server
are already set up from 0.py where I have: settings.email_server = 'gae' so they are already set up. Please not again that on GAE logs I have this information which is referring to *settings.server,* not *mail.settings.server* The line 327-328 in gluon/tools.py: is looking for *settings.server.* if not isinstance(self.*settings.server*, str): raise Exception('Server address not specified') ============================== db.define_table('auth_user', Field('username', type='string', label=T('Username')), Field('first_name', type='string', label=T('First Name')), Field('last_name', type='string', label=T('Last Name')), Field('email', type='string', label=T('Email')), Field('password', type='password', readable=False, label=T('Password')), Field('created_on','datetime',default=request.now, label=T('Created On'),writable=False,readable=False), Field('modified_on','datetime',default=request.now, label=T('Modified On'),writable=False,readable=False, update=request.now), Field('registration_key',default='', writable=False,readable=False), Field('reset_password_key',default='', writable=False,readable=False), Field('registration_id',default='', writable=False,readable=False), format='%(username)s', migrate=settings.migrate) db.auth_user.first_name.requires = IS_NOT_EMPTY(error_message=auth.messages.is_empty) db.auth_user.last_name.requires = IS_NOT_EMPTY(error_message=auth.messages.is_empty) db.auth_user.password.requires = CRYPT(key=auth.settings.hmac_key) db.auth_user.username.requires = IS_NOT_IN_DB(db, db.auth_user.username) db.auth_user.registration_id.requires = IS_NOT_IN_DB(db, db.auth_user.registration_id) db.auth_user.email.requires = (IS_EMAIL(error_message=auth.messages.invalid_email), IS_NOT_IN_DB(db, db.auth_user.email)) auth.define_tables(migrate = settings.migrate) ## configure email mail=auth.settings.mailer mail.settings.server = settings.email_server mail.settings.sender = settings.email_sender mail.settings.login = settings.email_login ## configure auth policy auth.settings.registration_requires_verification = False auth.settings.registration_requires_approval = False auth.settings.reset_password_requires_verification = True #auth.settings.login_next = URL('index') auth.settings.login_next = '/' #auth.settings.logout_next = URL('index') auth.settings.logout_next = '/' #auth.settings.profile_next = URL('index') auth.settings.profile_next = '/' #auth.settings.register_next = URL('user', args='login') auth.settings.register_next = '/' #auth.settings.retrieve_username_next = URL('index') auth.settings.retrieve_username_next = '/' #auth.settings.retrieve_password_next = URL('index') auth.settings.retrieve_password_next = '/' #auth.settings.change_password_next = URL('index') auth.settings.change_password_next = '/' #auth.settings.request_reset_password_next = URL('user', args='login') auth.settings.request_reset_password_next = '/' #auth.settings.reset_password_next = URL('user', args='login') auth.settings.reset_password_next = '/' #auth.settings.verify_email_next = URL('user', args='login') auth.settings.verify_email_next = '/'