在 Python 中使用 Flask 发送 html 电子邮件

use*_*226 8 html python email webpage flask

我想使用 Python 和 Flask 将 HTML 网页作为邮件正文发送。我尝试使用 MIME 模块,但不知何故我无法发送邮件。如果有人对此有任何专业知识,请帮助我。

如果您也能提供一些代码,那就太好了。

Esp*_*azi 12

flask-mail是一个很好的工具,我用来呈现模板以将 HTML 呈现为我的邮件正文。

from flask_mail import Message
from flask import render_template
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    
def send_mail_flask(to,subject,template,**kwargs):
    msg = Message(subject=subject,sender='email@ofTheSender.com', recipients=to)
    msg.body = render_template('template.txt', **kwargs)
    msg.html = render_template('template.html', **kwargs)
    mail.send(msg)
Run Code Online (Sandbox Code Playgroud)

模板是您希望包含在邮件中的 HTML 文件,您还可以使用msg.body!

您可能需要根据您使用的 SMTP 服务添加更多环境变量。


mik*_*sus 5

我最近制作了一个非常棒的电子邮件库,我决定也为其制作一个 Flask 扩展:Flask-Redmail

安装

pip install flask-redmail
Run Code Online (Sandbox Code Playgroud)

配置

from flask import Flask
from flask_redmail import RedMail

app = Flask(__name__)
email = RedMail(app)

# Setting configs
app.config["EMAIL_HOST"] = "localhost"
app.config["EMAIL_PORT"] = 0

app.config["EMAIL_USERNAME"] = "me@example.com"
app.config["EMAIL_PASSWORD"] = "<PASSWORD>"

app.config["EMAIL_SENDER"] = "no-reply@example.com"
Run Code Online (Sandbox Code Playgroud)

简单的例子

您可以简单地发送电子邮件:

@app.route("/send-email")
def send_email():
    email.send(
        subject="Example email",
        receivers=["you@example.com"],
        html="""
            <h1>Hi,</h1>
            <p>this is an example.</p>
        """
    )
Run Code Online (Sandbox Code Playgroud)

模板示例

它还可以使用您的默认 Jinja 环境。在 Flask 模板文件夹中创建一个文件emails/verify.html,如下所示:

<h1>Hi, you visited {{ request.endpoint }}.</h1>
Run Code Online (Sandbox Code Playgroud)

然后使用这个模板:

@app.route("/send-email-template")
def send_email():
    email.send(
        subject="Template example",
        receivers=["you@example.com"],
        html_template="emails/verify.html"
    )
Run Code Online (Sandbox Code Playgroud)

Flask Redmail 是 Red Mail 的一个非常简单的包装器,并且 Red Mail 的功能非常广泛。它可以:

  • 发送各种类型的附件
  • 将图像和绘图嵌入到 HTML 中
  • 将美化的表格嵌入到 HTML 中
  • 开箱即用地支持 Jinja
  • Gmail 和 Outlook 已预先配置

希望对你有帮助。

链接:

红色邮件:


Igo*_* T. 2

尝试使用 FlaskMail https://pythonhosted.org/flask-mail/

msg = Message(
    recipients=[''],
    sender='xx@zz.yy',
    reply_to='aa@bb.cc',
    subject=mail.subject
  )
msg.html = mail.body
mail.send(msg)
Run Code Online (Sandbox Code Playgroud)

这里,mail是从“mails”目录导入的文件,body是一个 HTML 标记。