使用html模板在python中发送电子邮件

时间:2013-10-25 17:09:00

标签: python email smtp celery

您好我正在尝试编写单独的邮件服务,该服务与我们的烧瓶应用程序分离。所以我正在寻找一种方法来在用户首次登录我们的烧瓶应用程序时发送欢迎电子邮件。我正在使用Celery和rabbitmq进行异步操作。

这是我的电子邮件功能 -

sen = 'example@gmail.com'
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()

最初我使用flask的render_template来获取html主体和主题。但我不想使用烧瓶扩展(我有我的理由)。所以我的问题是:

1)如何使用电子邮件模板以便轻松配置主题和正文字段?

2)如何将默认电子邮件发件人和密码放入配置文件/电子邮件模板中(可能与q1有关)?

3)似乎我有很多代码要发送简单的电子邮件。你能提出一些优化技巧(省略步骤)吗?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我写了一个简单的模块(mail.py)来使用模板(HTML / TEXT)发送电子邮件。希望有所帮助!

https://github.com/ludmal/pylib

答案 1 :(得分:0)

使用外部服务可能更简单。

服务(例如Mailchimp)易于集成。您可以在其图层中设计模板,并通过将应用程序中的合并数据发送到服务API来触发电子邮件。从功能上讲,它很像在本地呈现模板并通过SMTP发送出去,但是它们拥有复杂的工具,可以根据设备调整消息格式,跟踪退回,提高可传递性,报告等。

此类服务通常每月有多达1000封电子邮件的免费套餐。