Odoo Help


Access Denied on mail.mail create

Aaron Neo
on 11/1/13, 9:05 AM 2,161 views

Hi all,

Please see if you could help on my issue with creating mail.mail records for sending email to external email accounts. I am using mail.mail model to create email from Email Templates to send email externally.

Following is the code that does the sending:

def send_email(self, cr, uid, ids, email_content, context=None):
email_template_obj = self.pool.get('email.template')
template_ids = email_template_obj.search(cr, uid, [('model_id.model', '=',email_content["model"])], context=context) 
if template_ids:
    values = email_template_obj.generate_email(cr, uid, template_ids[0], ids, context=context)
    values['subject'] = email_content["subject"]
    values['email_to'] = email_content["to"]
    values['body_html'] = email_content["body"]
    values['body'] = email_content["body"]
    values['res_id'] = False
    mail_mail_obj = self.pool.get('mail.mail')
    msg_id = mail_mail_obj.create(cr, uid, values, context=context)
    if msg_id:
        mail_mail_obj.send(cr, uid, [msg_id], context=context) 
return True

The error occurred on the line "msg_id = mail_mail_obj.create(cr, uid, values, context=context)" I received error message in the web browser saying: Access Denied The requested operation cannot be completed due to security restrictions. Please contact your system administrator. (Document type: Message, Operation: create)

The user is already in the Human Resource / Employee group which allows create for mail.mail and mail.message, and I have tried explicitly added Access Rights to create mail.mail records in group but i am still being denied access.

Please help. I am at my wits end. Aaron

Aaron Neo
On 11/4/13, 2:44 AM

In case anyone also have this same problem, I have resolved this problem by using another method to send email to external email accounts.

Below is the new way of sending email using email.template

def send_email(self, cr, uid, model, res_id, context=None):
email_template_obj = self.pool.get('email.template')
template_ids = email_template_obj.search(cr, uid, [('model_id.model', '=',model)], context=context) 
if template_ids:
    email_template_obj.send_mail(cr, uid, template_ids[0], res_id, force_send=True, context=context)
return True

By not using mail.mail, I have avoided the problem. Tested with a user assigned to Human Resource / Employee group, the user is able to send out the email successfully.

Regards, Aaron

Hello, Aaron. It is a way to do it that you mentioned. But i have done with the format given in Question and i am getting an error even though i have updated the record for object Document Followers. Do you have any idea how can i do it? Thanks in Advance.

Chintan Modi-BrowseInfo
on 6/10/16, 10:37 AM

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

2 follower(s)


Asked: 11/1/13, 9:05 AM
Seen: 2161 times
Last updated: 3/16/15, 8:10 AM