Odoo 10:从odoo发送电子邮件

时间:2018-10-01 15:21:56

标签: python email odoo

我继承了通讯录模块并编写了sendEmail函数:

def sendEmail(self,values):
            _logger.error("sendEmail Called")
            mail_pool = self.env['mail.mail']
            values={}

            values.update({'subject': 'Catastrophe in Odoo'})

            values.update({'email_to': 'anub@petra.com'})

            values.update({'body_html': 'something is wrong' })

            values.update({'body': 'someone is messing up' })     

            msg_id = mail_pool.create(values)
            _logger.error(str(msg_id))

            if msg_id:

                 result= mail_pool.send([msg_id]) 
                 _logger.error(str(result)) 

产生此日志:

2018-10-01 15:17:20,144 21332 ERROR test odoo.addons.contacts.models.models: sendEmail Called
2018-10-01 15:17:20,165 21332 ERROR test odoo.addons.contacts.models.models: mail.mail(13,)
2018-10-01 15:17:20,165 21332 ERROR test odoo.addons.contacts.models.models: True

我还在清单文件中添加了邮件:

 'depends': ['mail','base', 'contacts', 'web_readonly_bypass'],

所有这些之后,我的帐户中没有收到电子邮件。我的传出服务器也已正确配置,因为我能够将重设密码的电子邮件发送给用户。那我在代码中丢失了什么吗?

2 个答案:

答案 0 :(得分:1)

我认为您的问题是您没有使用创建的记录正确调用send方法。尝试这样,它应该可以工作

result= msg_id.send()

想法是调用记录集msg_id上发送的方法作为新api用法中的状态。

答案 1 :(得分:0)

这是我基于您的第一个示例的示例,并且对我有用:

def send_assessment(self):
  mail_pool = self.env['mail.mail']
  values={}
  values.update({'subject': 'Catastrophe in Odoo'})
  values.update({'email_to': 'user@domain.com'})
  values.update({'body_html': 'something is wrong' })
  values.update({'body': 'someone is messing up' })
  msg_id = mail_pool.create(values)
  result =  msg_id.send()