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



我正在尝试编写一个单独的邮件服务,该服务与我们的 Flask 应用程序分离。我正在寻找一种在用户首次登录我们的 Flask 应用程序时发送欢迎电子邮件的方法。我正在使用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正文和主题。但我不想使用Flask扩展(我有我的理由)。所以我的问题是:

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

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

  3. 似乎我有很多代码来发送简单的电子邮件。你能建议一些优化技术(省略步骤)吗?

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

https://github.com/ludmal/pylib

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

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

像这样的服务通常有一个免费套餐,每月最多可容纳 1000 封电子邮件。

相关内容

  • 没有找到相关文章

最新更新