Forum

Benvenuto!

Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.

0

[ODOO 12] Invio di una email con un template differente

Avatar
Davide Ercole

Salve a tutti e buona PasquaVi scrivo perché vorrei provare a capire come mandare una email personalizzata tramite codice python e impostando un template nuovo usando direttamente il linguaggio XML.

nel mio modulo custom chiamato anagraf_prodotto, creo una cartella data e inserisco il file email_template.xml in cui scrivo ciò:

<?xml version="1.0" ?>
<odoo>
 <data noupdate="1">
<record id="email_template" model="mail.template">
    <field name="name">Alert_Template</field>
    <field name="model_id" ref="model_x_account_alert"/>
    <field name="auto_delete" eval="True"/>
    <!--<field name="email_from">${(object.res_user_id.email}</field>-->
    <field name="email_from">davideodoo@gmail.com</field>
    <field name="email_to">davideodoo@gmail.com</field>
    
    <field name="subject">PROVA ALERT</field>
    <field name="body_html"><![CDATA[
 <p>Caro Davide,<br/><br/>
 Spero che questa email sia mandata<br/>
       ]]></field>
</record>
     </data>
    </odoo>

aggiorno anche il file __manifest__.py in cui inserisco la riga di codice 'data/email_template.py'

Poi nella cartella models, inserisco un nuovo file x_account_alert.py (il nome lo scrivo anche nel file __init__.py) e scrivo il seguente codice:

from odoo import models, fields, api
class x_Alert(models.Model):
    _name="account.x_alert"
    prova=fields.Integer("ciao")
   

    @api.model
    def x_sendmessage(self):

        print("STO MANDANDO L'EMAIL")
        template=self.env.ref('anagraf_prodotto.email_template')
        template_id= self.env.ref('anagraf_prodotto.email_template').id
        print("il template è ", template, " mentre il tempalte ID è ",template_id, "mentr eil no me è ", template.name)
        #fin qui tutto ok, leggo anche i vari print sul server

        template.send_email(self.id,force_send=True)

il template esce nella sezione dei template, tuttavia quando provo a mandare l'email esce questo errore
Mi esce il seguente errore: ValueError: <class 'AttributeError'>: "'mail.template' object has no attribute 'send_email'" while evaluating

Cosa mi consigliate? Buona PAsqua
Avatar
Abbandona
1 risposta
0
Avatar
Lorenzo Battistini
Migliore risposta

Se guardi il model mail.template vedi che il metodo si chiama send_mail, non send_email.

Avatar
Abbandona
0
Avatar
Davide Ercole
Migliore risposta

No vabbè, adesso funziona benissimo.

Giuro sono andato mille volte sul model mail.template per controllare il metodo, sarà stata la giornata di Pasqua.

Grazie ancora

Avatar
Abbandona