首页 > 解决方案 > 如何使用 Python Flask /flask_mail 发送带附件的电子邮件

问题描述

我最近开始了我的 python 冒险,就在几周前我发现了烧瓶。我正在尝试使用烧瓶发送一封带有 output.csv 文件的电子邮件。由于从我的 form.html 页面提交 html 表单,Output.csv 已被保存。

我的表格

from flask import Flask, render_template, request
from flask_mail import Mail, Message
import csv

app = Flask(__name__)
app.config.update(dict(
    DEBUG = True,
    MAIL_SERVER = 'smtp.gmail.com',
    MAIL_PORT = 587,
    MAIL_USE_TLS = True,
    MAIL_USE_SSL = False,
    MAIL_USERNAME = 'myemail@gmail.com',
    MAIL_PASSWORD = '*****',
))

mail = Mail(app)


@app.route('/')
def myForm():
   return render_template('form.html')

@app.route('/steptwo',methods = ['POST', 'GET'])
def steptwo():
   if request.method == 'POST':

        id = request.form['id']
        name = request.form['name']
        email = request.form['email']
        website = request.form['website']
        requestPhoneNr = request.form['requestPhoneNr']
        requestTopic = request.form['requestTopic']
        requestDescription = request.form['requestDescription']
        requestOriginator = request.form['requestOriginator']

        fieldnames = ['requestPhoneNr', 'requestTopic', 'requestDescription', 'requestOriginator']


        with open('path/to/my/output.csv','a') as inFile:
            writer = csv.DictWriter(inFile, fieldnames=fieldnames)

            writer.writerow({'requestPhoneNr': requestPhoneNr, 'requestTopic': requestTopic, 'requestDescription': requestDescription, 'requestOriginator': requestOriginator})
        msg = Message('Sample title', sender = 'myemai@gmail.com',       recipients = ['myotheremail@gmail.com'])
        msg.body = request.form['id'] + request.form['name'] + request.form['email'] + request.form['website']
        with app.open_resource("path/to/my/output.csv") as fp:
            msg.attach("path/to/my/output.csv", "text/csv", fp.read())
        mail.send(msg)


        return 'Thanks for your input!'






if __name__ == '__main__':
   app.run(debug = True)

解决了!

标签: pythonpython-3.xflaskflask-mail

解决方案


推荐阅读