首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建烧瓶api调用,从文件创建动态html电子邮件内容体,并使用smtplib发送邮件?

如何创建烧瓶api调用,从文件创建动态html电子邮件内容体,并使用smtplib发送邮件?
EN

Stack Overflow用户
提问于 2022-02-28 01:48:56
回答 1查看 539关注 0票数 2

主要是如何仅使用API为电子邮件创建动态的html正文内容?

简单的邮件创建和发送是容易的。我试过的是:

代码语言:javascript
复制
import smtplib
from os.path import basename
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate

from flask import Flask, request, jsonify
import re
import csv

app = Flask(__name__)
app.run(debug=True,host='0.0.0.0', port=8085)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

#curl -F 'files=@email_body.html'  -F metadata="{'send_from':'abc@mydomain.com', 'subject':'Hi from massmail api', 'send_to':'xyz2020@gmail.com'}"  -X POST http://localhost:8085/mail


@app.route("/mail", methods=['POST'])
def send_mail():
    server = "127.0.0.1"
    smtp = smtplib.SMTP(server)
    data = request.get_json(force=True)
    files = request.files['files']
    metadata = request.form.get("metadata")
    send_from = None
    mmeta = eval(metadata)
    send_from = mmeta['send_from']
    subject = mmeta["subject"]
    text = 'Hi, how do you do. We are fine mailing'
    msg = MIMEMultipart()
    msg['From'] = send_from
    msg['To'] = mmeta["send_to"]
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = mmeta["subject"]
    msg.attach(MIMEText(text))
    #for f in files or []:
    #    print(f,' ---file attachment')
    #    with open(f, "rb") as fil:
        #with app.open_resource(f, "rb") as fil:
   #         part = MIMEApplication(
   #             fil.read(),
   #             Name=basename(f)
   #         )
            # After the file is closed
   #         part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
    #        msg.attach(part)
    smtp.sendmail(send_from, msg["To"], msg.as_string())
    #print('mail sent:', row['email'])

    smtp.close()
    return jsonify({'Mail sent successfully' : subject}), 200


if __name__ == "__main__":
    app.run(debug=True,host='0.0.0.0', port=8085)

我还需要为邮件创建正常的文本正文,以相同的方式处理相同的电子邮件。最好的选择是上传文本和html正文内容文件。但是如何使用api和相应的卷曲进行同样的操作,请指导。

EN

回答 1

Stack Overflow用户

发布于 2022-03-07 19:30:29

基于下面的注释,这似乎是您要问的主要问题:如何通过curl?将html和txt文件上传到您的烧瓶应用程序中,我的建议是审查这个answer,它是通过curl使用名称字段作为文本和文件存储的文件数据字段:

来自mata的回答:

代码语言:javascript
复制
curl -i -X PUT -F name=Test -F filedata=@SomeFile.pdf "http://localhost:5000/" 

python:

代码语言:javascript
复制
file = request.files['filedata']   # gives you a FileStorage
test = request.form['name']        # gives you the string 'Test'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71289869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档