Odoo Help


Cannot send email: user has no email address.

Rick Leir
on 8/1/13, 1:20 AM 2,656 views

When I try to send an invitation to a new user the error is "Cannot send email: user has no email address." The user does have an email address in the user form, but if you look in res_users the email field is blank.

To avoid the need for an invitation, I assigned passwords to the new users via the user form, but the passwords are rejected at login.

OpenERP is installed on my server, and the version is 7.saas~1. I used some recent tarballs from runbot/launchpad:

  2734543 2013-07-30 15:48 openerp_openerp-web_saas-1-r3740.tgz
 57124319 2013-07-30 15:33 openerp_openobject-addons_saas-1-r8753.tgz
 10571804 2013-07-30 15:47 openerp_openobject-server_saas-1-r4894.tgz

What should I look at to troubleshoot this?

I followed the code through addons/auth_signup/res_users.py,

    def action_reset_password(self, cr, uid, ids, context=None):
        """ create signup token for each user, and send their signup url by email """
        # prepare reset password signup
        res_partner = self.pool.get('res.partner')
        partner_ids = [user.partner_id.id for user in 
                                      self.browse(cr, uid, ids, context)]
        res_partner.signup_prepare(cr, uid, partner_ids, signup_type="reset", 
                             expiration=now(days=+1), context=context)

        if not context:
            context = {}

        # send email to users with their signup url 
        template = False
        if context.get('create_user'):
                template = self.pool.get('ir.model.data').get_object(cr, uid,
                                     'auth_signup', 'set_password_email')
            except ValueError:
        if not bool(template):
            template = self.pool.get('ir.model.data').get_object(cr, uid, 
                                   'auth_signup',  'reset_password_email')
        mail_obj = self.pool.get('mail.mail')
        assert template._name == 'email.template'
        for user in self.browse(cr, uid, ids, context):
            if not user.email:
                print repr(user)
                print repr(user.login)
                print repr(user.openid_email )

                raise osv.except_osv(
                         _("Cannot send email: user has no email address."), 

When it reads the res_users table, it gets the id and login fields correctly, but it gets nothing from the email field even though I have manually put an email address in using psql. Is it trying to get this email address from somewhere else?

Many thanks -- Rick

On 8/1/13, 12:29 PM

Try setting an alias also.

Thanks. OpenERP seems to be creating an alias for each user automatically in the mail_alias table.

Rick Leir
on 8/2/13, 1:22 PM
Rick Leir
On 8/16/13, 4:34 PM

I have what seems like a crude hack to fix this signup issue. I say hack because I do not fully understand the system.

The hack: in Python code, take the 'login' field (containing joe@fooz.com), and write it to the 'email' field when the 'invite' button has been clicked, just before the invitation email is sent.

in addons/auth_signup/res_users.py, at line 269, remove:

 if not user.email:
      raise osv.except_osv(_("Cannot send email: user has no email address."), 

replace it with

 if not user.email:
      # RWL AUG 2013
      values = {'email': user.login}
      self.write(cr, uid, user.id, values, context)

now I need to test it more.

On 8/21/13, 5:14 AM

Why you dont want to use original e-mail adress?

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

0 follower(s)


Asked: 8/1/13, 1:20 AM
Seen: 2656 times
Last updated: 3/16/15, 8:10 AM