python - 如何在没有邮件模板 odoo 9 的情况下发送电子邮件

标签 python postgresql odoo

我想在 odoo 9 中发送没有任何电子邮件模板的电子邮件。我已经成功设置了传出和传入邮件配置。 我的场景是作为电子邮件发件人的管理员邮件别名 这是我的模型:

class cashadvance(osv.osv):
_name = 'comben.cashadvance'
    _order = 'create_date DESC'
    _columns = {
        'user_target'               : fields.many2one('res.users', string='User Target'),
        'mail_target'               : fields.char(string='Email Target'),
    }

问题是,如何使用函数将电子邮件发送到 mail_target 字段? 请帮助我

最佳答案

您可以使用 mail.thread 模型直接发送邮件,方法是使用以下附加到按钮的代码。

@api.multi
def send_mail(self):
    user_id = self.user_target.id
    body = self.message_target

    mail_details = {'subject': "Message subject",
         'body': body,
         'partner_ids': [(user_target)]
         } 

    mail = self.env['mail.thread']
    mail.message_post(type="notification", subtype="mt_comment", **mail_details)

或者您可以不畏艰险,使用标准库中的普通 ol smtplib,(但是您的 odoo 配置将不再重要)。此示例假定您使用的是 gmail。如果不是,则必须填写邮件服务器的详细信息才能正常工作。

@api.multi
def send_mail(self):
    import smtplib

    receivers_email = self.user_target.login

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login("your_email_address", "password")

    message = self.message_target
    server.sendmail("your_email_address", receivers_email, message)

    server.quit()

由于 user_targetres.users 字段相关,您可以从 login 字段获取电子邮件

关于python - 如何在没有邮件模板 odoo 9 的情况下发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39590054/

相关文章:

sql - 在 postgresql 中合并行

database - 海量 postgres 表的最佳实践

python - Many2one Odoo 11 中的域

Odoo - 在继承 View 中隐藏没有名称的组或页面

python - 使用不带动画功能的 matplotlib 进行动画处理

python - 如何检查数据框中的列是否等于 Pandas 中的某种数据类型?

python - 在python中获取友好的设备名称

python - 将字符串(任意顺序)与大数组中的字符串进行匹配

持久化引用和删除引用对象的 SQL 实践

odoo - 如何在 Odoo 中为组制作下拉列表而不是复选框?