5

プロジェクトでタスクを割り当てられた人に電子メールを送信する方法、またはタスクが終了したときにプロジェクト マネージャーに電子メールを送信する方法はありますか?

私は OpenERP v6.1 に取り組んでいます。

返信ありがとうございます

4

5 に答える 5

3

ボタンオブジェクトのメソッドをオーバーライドできます。

    obj_mail_msg = self.pool.get('mail.message')
    obj_mail_server = self.pool.get('ir.mail_server')
    mail_server_ids = obj_mail_server.search(cr, uid, [], context=context)
    mail_server_record = obj_mail_server.browse(cr, uid, mail_server_ids)[0]
    obj_mail_msg.schedule_with_attach(cr, uid, 
                            email_from, 
                            email_to = [list of email], 
                            subject='Notification for Task',
                            body=tools.ustr(mail_body) or '', 
                            mail_server_id = mail_server_ids[0])

schedule_with_attachはメッセージを作成し、メッセージは(settings > configuration > Email > Massages)スケジューラによって送信されます。

それが役立つことを願っています。

于 2012-11-09T08:49:34.810 に答える
2

これは2つの方法で行うことができます。

ワークフロー

「バニラ」の方法は、ワークフローを使用することです。ワークフローアクティビティは、到達したときに電子メールを送信するサーバーアクションをトリガーできます。オブジェクトのワークフローを作成する必要があります(例project.task)。type='object'ビューの状態ボタンをからに変更することを忘れないでくださいtype='workflow'ここに例があります。

OpenERPでのモジュール開発に慣れていない場合、これはかなり複雑になる可能性があります。そして私見では、そのような「明白な」機能には多くの問題があります。

自動化されたアクション

それは私たちにそれを行う2番目の方法につながります:base_action_ruleモジュールを使用することです。残念ながら、モジュールで達成できることにはかなり制限があることがわかりました。base_action_rule_triggerそこで私は、あなたが達成しようとしている自動化の種類を単純化するために、拡張機能を作成しました。

たとえば、プロジェクトの問題がクローズされたときに通知を作成します。

  • [設定]モジュールで、[カスタマイズ]»[自動アクション]メニューを選択し、新しいものを作成します。
  • [条件]タブで、[ルール名]フィールドと[オブジェクト]フィールドを設定します。
  • 「評価された式」を次のように設定しchanged.get('state') == 'done'ます。

セットする

  • [アクション]タブで、[電子メールテンプレート]を設定し、[すぐに送信]フラグをオンにします。

をセットする

  • 新しい「Eメールテンプレート」モジュールは、Eメールの設計とレンダリングに使用されます。

ここに画像の説明を入力してください

その他のトリガー式の例:

  • 責任がユーザーXからユーザーYに変更されました。old.get('user_id') and new.get('user_id') and old.get('user_id') != new.get('user_id')
  • 新規または未割り当ての問題:inserting or changed.get('state') == 'draft' or not new.get('user_id')
于 2012-11-09T09:11:50.587 に答える
0

「email_template」モジュールを使用してメールを送信できます。まず、そのためのテンプレートを作成する必要があります。
email.template を作成したくない場合は、「mail.message」の「send mail メソッド」を直接使用できます。

def send_email(cr, uid, ids, context=None):
    mail_server_obj = self.pool.get('ir.mail_server')
    mail_server_ids = mail_server_obj.search(cr, uid, [], context=context)
    if mail_server_ids:
        mail_message_obj = self.pool.get('mail.message')
        email_from = mail_server_obj.browse(cr, uid, mail_server_ids[0], context=context).smtp_user
        values = {
                'subject': your_subject,
                'body_html': your_body_message,
                'email_from': email_from,
                'email_to': email_to,
                'model': model_name,
                'res_id': ids[0],
                'mail_server_id': mail_server_ids and mail_server_ids[0],
                'date': time.strftime('%Y-%m-%d %H:%M:%S'),
                'state': 'outgoing',
                'subtype': 'html',
            }
            msg_id = mail_message_obj.create(cr, uid, values, context=context)
            if msg_id:
                mail_message_obj.send(cr, uid, [msg_id], context=context)
于 2012-11-09T08:23:01.713 に答える
-2

これは、私のプロジェクトの 1 つで使用したものです。おそらく、メール サーバー (smtp) のパラメーターに自分のパラメーターを入力すると、問題が解決するでしょう。

import javax.mail.*;
import javax.mail.internet.*;
Properties properties = System.getProperties(); 
properties.setProperty("mail.smtp.host", "smtp.gmail.com");
properties.setProperty("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
Session session = Session.getDefaultInstance(properties, new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication()    {
        return new PasswordAuthentication(acc, pass);
    }
});
MimeMessage mimeMessage = new MimeMessage(session);

Transport.send(mimeMessage);
于 2012-11-09T01:50:23.940 に答える