6

我正在尝试编写一个单独的邮件服务,它与我们的 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()

最初我使用 Flaskrender_template来获取 HTML 正文和主题。但我不想使用 Flask 扩展(我有我的理由)。所以我的问题是:

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

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

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

4

2 回答 2

0

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

https://github.com/ludmal/pylib

于 2014-02-10T08:58:16.973 回答
0

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

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

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

于 2016-10-07T22:09:41.427 回答