主要是如何仅使用API为电子邮件创建动态的html正文内容?
简单的邮件创建和发送是容易的。我试过的是:
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和相应的卷曲进行同样的操作,请指导。
发布于 2022-03-07 19:30:29
基于下面的注释,这似乎是您要问的主要问题:如何通过curl?将html和txt文件上传到您的烧瓶应用程序中,我的建议是审查这个answer,它是通过curl使用名称字段作为文本和文件存储的文件数据字段:
来自mata的回答:
curl -i -X PUT -F name=Test -F filedata=@SomeFile.pdf "http://localhost:5000/" python:
file = request.files['filedata'] # gives you a FileStorage
test = request.form['name'] # gives you the string 'Test'https://stackoverflow.com/questions/71289869
复制相似问题