2013-10-25 9 views
5

こんにちは私はフラスコアプリケーションと分離された別のメールサービスを作成しようとしています。だから私はユーザーが私たちのフラスコのアプリケーションに初めてログインしたときにウェルカムメールを送信する方法を探しています。私はそれを非同期に行うためにCeleryとrabbitmqを使用しています。 htmlテンプレートを使用してPythonで電子メールを送信する

sen = '[email protected]' 
pwd = 'my_password' 

@celery.task 
def send_email(nickname, email): 
    msg = MIMEMultipart('alternative') 
    msg['Subject'] = 'my_sub' 
    msg['From'] = sen 
    msg['To'] = email 

    html = <b>test_body</b> 

    part1 = MIMEText(html, 'html') 
    msg.attach(part1) 

    server = smtplib.SMTP("smtp.gmail.com", 587) 
    server.ehlo() 
    server.starttls() 
    server.login(sen, pwd) 
    server.sendmail(sen, [email], msg.as_string()) 
    server.close() 

は当初、私は、HTML本文と件名を取得するために、フラスコのrender_templateを使用していた -

は、ここに私のメール機能です。しかし、私はフラスコ延長を使用したくない(私の理由がある)。だから質問があります:

1)件名と本文フィールドを簡単に設定できるように電子メールテンプレートを使用するにはどうしたらいいですか?

2)デフォルトの電子メール送信者とパスワードを設定ファイル/電子メールテンプレート(q1に関連する可能性があります)に入れるにはどうすればよいですか?

3)シンプルなメールを送信するためのコードが非常に多いようです。いくつかの最適化手法(ステップを省略)を提案できますか?

ご協力いただきありがとうございます。

+0

電子メールテンプレートを使用するもう1つの理由 - パラメータを渡します。パーソナライズされた電子メールを送信するため。 – user2216194

+1

'jinja2'のようなテンプレートエンジンを使いたくないなら、[python標準ライブラリstring.Template](http://docs.python.org/2/library/string.html#template-文字列)を使用します。 –

+0

@ user2216194、私も同様の要件を持っていますが、解決策を考案しましたか?ジンジャーを使わない理由は何ですか?なぜレンダリングしないのですか? (編集:それは解決策の評価に役立つでしょう) –

答えて

0

テンプレート(HTML/TEXT)を使用して電子メールを送信する簡単なモジュール(mail.py)を作成しました。希望が助けてくれる!

https://github.com/ludmal/pylib

0

外部サービスを利用する方が簡単かもしれません。

サービス(Mailchimpなど)は簡単に統合できます。レイヤー内でテンプレートを設計し、アプリケーションからサービスAPIにマージデータを送信して電子メールをトリガーすることができます。機能的には、テンプレートをローカルでレンダリングしてSMTP経由でメール送信するのに似ていますが、デバイスにメッセージフォーマットを適合させ、バウンスを追跡し、配信性を向上させ、レポートなどを改善する洗練されたツールがあります。 1ヶ月あたり最大1000件のメールが届きます。

関連する問題