【问题标题】:Cannot send email from website - Odoo v9 community无法从网站发送电子邮件 - Odoo v9 社区
【发布时间】:2017-05-17 12:25:57
【问题描述】:

我在cashflow_report 模型上有这个方法:

class cashflow_report(models.Model):
    _name = 'cashflow.report'
    _description = 'Cashflow Report'
    _order = "date asc, id asc"
    @api.one
    def send_mail_function_model(self):
        template_id = self.env.ref('opencloud_cashflows.email_template_loan')
        if template_id:
            template_id.send_mail(self.id, force_send=True)
        return True

然后,我的电子邮件模板:

<?xml version="1.0" ?>
<openerp>
<data noupdate="0">
    <!--Email template -->
    <record id="email_template_loan" model="mail.template">
        <field name="name">Loan - Send by Email</field>
        <field name="email_from"><![CDATA[${object.company_id.name} <${(object.company_id.email or user.email)|safe}>]]></field>
        <field name="email_to">${(object.company_id.loan_email and '%s &lt;%s&gt;' % (object.company_id.name, object.company_id.loan_email) or '')|safe}</field>
        <field name="subject">${object.company_id.name} Pedido de préstamo desde blinking.cl</field>
        <field name="model_id" ref="model_cashflow_report"/>
        <field name="auto_delete" eval="True"/>
        <field name="lang">${object.env.user.lang}</field>
        <field name="body_html"><![CDATA[
        <div style="font-family: 'Lucida Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
<center><img src="http://www.blinking.cl/images/blinking-img-redes.jpg"></img></center>
<p>Hola ${object.partner_id.bank},</p>
<br/>
<p>Requerimos la siguiente cantidad como préstamo ${object.field_total},</p>
<br/>
<p>Por favor cualquier duda comuniquese con nuestro teléfono ${object.company_id.phone},</p>
<br/>
<p>Muchas Gracias</p>
        ]]></field>
    </record>
</data>
</openerp>

那么这个javascript方法,文件就叫email.js:

odoo.define('opencloud_cashflows.cashflow_report', function (require) {
"use strict";
var ajax = require('web.ajax');
var core = require('web.core');
var session = require('web.session');
var base = require('web_editor.base');
var _t = core._t;
base.url_translations = '/website/translations';
var _t = core._t;
var Model = require('web.DataModel');
$(document).ready(function(){
    var model = new Model('cashflow_report');
    $('send_mail_function_model').click(function(){

    model.call('send_mail_function_model',[])

    })
});
});

所以,我从 Odoo 的网站页面调用该文件:

    <template id="assets_frontend_website_page_cashflows" inherit_id="website.assets_frontend" name="Assets Dashboard Website Page">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/opencloud_cashflows/static/src/js/highcharts.js"/>
            <script type="text/javascript" src="/opencloud_cashflows/static/src/js/exporting.js"/>
            <script type="text/javascript" src="/opencloud_cashflows/static/src/js/email.js"/>
            <style type="text/css">
                ${demo.css}
            </style> ...

然后,在一个按钮上,我从 javascript 中调用该函数,该函数最初是在模型文件中声明的:

    <center><input id="send_mail_function_model" class="btn btn-primary btn-lg" name="send_mail_function_model" value="Pedir préstamo al Banco" type="submit" style="background-color:#e67e22;"/></center>

不知道是按钮类型(提交),还是邮件模板少了什么?

我在 Odoo 的后端配置了外发电子邮件,但每次单击此按钮时它都不会发送任何内容。

此外,命令行上没有任何痕迹。什么都没有。

有什么想法吗?

编辑

检查 Firefox 上的按钮显示:

Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead[Learn More]  es5-shim.min.js:2
warning: Some modules could not be started 
Missing dependencies:    Array [ "web.DataModel" ] 
Rejected modules:        Array [ "website_portal",    "website_forum.website_forum", "website_forum.share", "website_payment.website_payment", "website_sale.website_sale", "website_blog.editor" ] 
Non loaded modules:      Array [ "opencloud_cashflows.cashflow_report" ]

【问题讨论】:

  • 有时邮件被发送但又被退回,这可能是 1 种情况
  • 嗨,Amey,谢谢你,但是不,它没有发送任何内容,我真的不知道可能是什么问题
  • send_mail_function_model 方法真的被调用了吗?如果您放置打印语句,它们会被显示吗?另外,检查您的浏览器控制台是否有任何 javascript 输出
  • 嗨乔治,刚刚编辑了我的问题,是的,从它被调用的 javascript 中,然后从网站按钮调用它。

标签: javascript python openerp odoo-9


【解决方案1】:

也许你可以在 send_mail_function_model func 中调试!并尝试: email_template_obj.send_mail(self._cr, self._uid,template_id, ids[0],True, context=self._context) 或 self.pool('email.template') 代替 self.env

【讨论】:

  • 嗨,谢谢,稍后再试,但我认为它没有调用任何东西,我的意思是,不知何故,那个按钮没有调用任何东西,不确定你建议的修改,需要尝试一下,但我认为它在网站方面没有做任何事情,无论我在 js 文件上做什么,都会尝试回信,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2023-01-13
  • 2012-01-12
  • 2011-12-22
  • 2015-03-24
相关资源
最近更新 更多