Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
3 Răspunsuri
8570 Vizualizări

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'):
            try:
                template = self.pool.get('ir.model.data').get_object(cr, uid,
                                     'auth_signup', 'set_password_email')
            except ValueError:
                pass
        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 )
                traceback.print_exc(file="/tmp/stack")    

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

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

Imagine profil
Abandonează
Cel mai bun răspuns

Try setting an alias also.

Imagine profil
Abandonează
Autor

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

Autor Cel mai bun răspuns

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."), 
                           user.name)

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.

Imagine profil
Abandonează
Cel mai bun răspuns

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

Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
0
iun. 21
2120
1
ian. 24
16945
0
mar. 23
2667
1
mar. 15
7135
0
mar. 15
3745