如何以编程方式向用户发送电子邮件? (OpenERP& Python)

时间:2015-07-23 23:06:47

标签: python openerp openerp-7

在我的OpenERP模块中,我偶尔需要向用户发送通知或消息,但使用res.users.message_post的明显方式(至少对我来说)在用户记录上放置了一条消息,而不是将消息发送到用户。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在发送消息之前,您需要安装Social Network模块(如果您想查看其代码,则它位于.../addons/mail中。)

之后,以下代码片段将完成此任务:

from openerp import SUPERUSER_ID

def send_message(oe, cr, user_ids, subject, body):
    "sends message to user_ids"
    mail_message = oe.pool.get('mail.message')
    mail_message_subtype = oe.pool.get('mail.message.subtype')
    [discussion_id] = mail_message_subtype.browse(
            cr, SUPERUSER_ID, [('name','=','Discussions')]
            )
    users = oe.pool.get('res.users').search(cr, uid, user_ids)
    mail_message.create(cr, SUPERUSER_ID, values=dict(
            type='email',
            subtype_id=discussion.id,
            partner_ids=[(4, u.partner_id.id) for u in users],
            subject=subject,
            body=body,
            ))

将它放在某处的实用程序模块中,你就可以了。

一对评论:

  • 调用时,将self作为第一个参数传递     send_message(self, cr, ...)
  • 如果您想将此方法改为类的方法,只需将oe替换为self,并从参数中省略self
  • 这将在OpenERP内部向用户发送一条消息,如果任何用户将其偏好设置为转发到外部电子邮件,则会为他们生成实际的电子邮件。