2013-10-25 97 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() 

起初我是用瓶的render_template獲得HTML正文和主題。但我不想用延長瓶(我有我的理由)。所以我的問題是:

1)我怎樣才能使用電子郵件模板,使主題和身體領域可以很容易地配置?

2)如何將默認電子郵件發件人和密碼放在配置文件/電子郵件模板中(可能與q1有關)?

3)它似乎是我有一個可怕的很多代碼發送一個簡單的電子郵件。你能提出一些優化技術(省略步驟)嗎?

在此先感謝您的幫助。

+0

使用電子郵件模板的另一個原因 - 傳遞參數。爲了發送個性化的電子郵件。 – user2216194

+1

如果你不想使用像'jinja2'這樣的模板引擎,你可以考慮[python標準庫string.Template](http://docs.python.org/2/library/string.html#template-字符串),它提供簡單的字符串替換。 –

+0

@ user2216194,我也有類似的要求,你想出了一個解決方案?你不使用忍者的理由是什麼?或爲什麼不render_template? (編輯:它會幫助我評估解決方案) –

回答

0

這可能是簡單的使用外部服務。

服務(例如Mailchimp)易於集成。您可以在其圖層中設計模板,並通過從您的應用向服務API發送合併數據來觸發電子郵件。從功能上來說,它很像在本地渲染模板並通過SMTP郵寄出去,但它們具有用於將消息格式適配到設備,跟蹤反彈,提高傳送能力,報告等的複雜工具。

像這樣的服務通常有一個免費的每月最多1000封電子郵件。