5

Pyramid アプリケーションからメールを送信する方法が必要です。私はpyramid_mailerを知っていますが、かなり制限されたメッセージ クラスを持っているようです。電子メールの本文を生成するテンプレートを使用して、pyramid_mailer からメッセージを書き込めるかどうかわかりません。さらに、リッチテキストがサポートされているかどうか、または単純なプレーンテキストであるかどうかについては何も見ていません。

以前は、Pylons フレームワークでTurbomailを使用していました。残念ながら、TurboMail for Pyramid で使用できるアダプタはないようです。TurboMail を拡張してフレームワークを追加できることは知っていますが、そのようなタスクをどこから開始すればよいかわかりません。誰かが Pyramid 用のアダプターを書いたことがありますか? または、そうするために必要な正しい方向に私を向けることができますか?

4

2 に答える 2

4

Turbomail についての質問には、Pyramid で問題なく動作すると聞いたということ以外にはお答えできません。

pyramid_mailer に関しては、ピラミッドがすべてのテンプレートをレンダリングできるのと同じサブシステムを使用して、電子メールをレンダリングすることは完全に可能です。

from pyramid.renderers import render

opts = {} # a dictionary of globals to send to your template
body = render('email.mako', opts, request)

また、pyramid_mailer Message オブジェクトは、安定していて十分にテストされた lamson MailResponse オブジェクトに基づいています。

Message クラスにbodyまたはコンストラクタ パラメータを指定することにより、プレーン テキストの本文と html の両方で構成されるメールを作成できます。html

plain_body = render('plain_email.mako', opts, request)
html_body = render('html_email.mako', opts, request)
msg = Message(body=plain_body, html=html_body)
于 2011-06-07T06:25:06.273 に答える
3

ターボメールをインストールします

easy_install turbomail

次のようなファイルをピラミッド プロジェクトに作成します (私は lib に入れます)。

import turbomail

    def send_mail(body, author,subject, to):
    """
    parameters:
    - body content 'body'
    - author's email 'author' 
    - subject 'subject'
    - recv email 'to'

    """
    conf = {
            'mail.on': True,
            'mail.transport': 'smtp',
            'mail.smtp.server': 'MAIL-SERVER:25',
        }

    turbomail.interface.start(conf)
    message = turbomail.Message(
            author = author,
            to = to,
            subject = subject,
            plain = 'This is HTML email',
            rich = body,
            encoding = "utf-8"
        )

    message.send()
    turbomail.interface.stop()

次に、コントローラーでこの関数を次のように呼び出します。

#first import this function
from myproject.lib.mymail import send_mail

#some code...

    body = "<html><head></head><body>Hello World</body></html>"
    author = "mymail@example.com"
    subject = "testing turbomail"
    to = "mysecondmail@example.com"
    send_mail(body, author, subject, to)
于 2011-06-14T07:08:54.743 に答える