javascript - 使用长字符串时出现键错误
问题描述
我用电子编写了一个应用程序,它可以发送 HTML 电子邮件(使用 python)。这是我的预载:
// All of the Node.js APIs are available in the preload process.
// It has the same sandbox as a Chrome extension.
window.addEventListener('DOMContentLoaded', () => {
const replaceText = (selector, text) => {
const element = document.getElementById(selector)
if (element) element.innerText = text
}
document.getElementById("submit").addEventListener("click", clicked_button)
function clicked_button(){
var htmlcontent = document.getElementById("htmlinput").value
const {PythonShell} = require("python-shell");
var path = require("path")
var frommail = document.getElementById("from").value
var tomail = document.getElementById("to").value
var subject = document.getElementById("subject").value
var server = document.getElementById("server").value
var port = document.getElementById("port").value
var password = document.getElementById("password").value
var options = {
scriptPath: path.join(__dirname),
args: [htmlcontent, frommail, tomail, subject, server, port, password]
}
var hpm = new PythonShell('main.py', options);
alert("Successfully sended the mail!")
}
function loadAsText(theFile, input) {
var reader = new FileReader();
reader.onload = function(loadedEvent) {
document.getElementById(input).value = loadedEvent.target.result;
}
reader.readAsText(theFile);
return
}
document.addEventListener('drop', (e) => {
e.preventDefault();
e.stopPropagation();
for (const f of e.dataTransfer.files) {
loadAsText(f, "htmlinput");
}
});
document.addEventListener('dragover', (e) => {
e.preventDefault();
e.stopPropagation();
});
})
这是我的python脚本:
import smtplib
from email.message import EmailMessage
from email.utils import make_msgid
import sys
def sendmail(htmlcontent, frommail, tomail, subject, server, port, password):
msg = EmailMessage()
asparagus_cid = make_msgid()
msg.add_alternative(htmlcontent.format(asparagus_cid=asparagus_cid[1:-1]), subtype='html')
msg['Subject'] = subject
msg['From'] = frommail
msg['To'] = tomail
s = smtplib.SMTP(server, port)
s.connect(host=server, port=port)
s.starttls()
s.login(frommail, password)
s.send_message(msg)
s.quit()
sendmail(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7])
sys.stdout.flush()
如果我启动应用程序并发送一个小的 html 文本,它就可以工作。但是如果我发送一个大的 html 文本,我会得到一个“keyerror”:
Uncaught Error: KeyError: 'position'
at PythonShell.parseError (/Users/kloetzchengrafik/Documents/send-html-mail/node_modules/python-shell/index.js:261:21)
at terminateIfNeeded (/Users/kloetzchengrafik/Documents/send-html-mail/node_modules/python-shell/index.js:144:32)
at ChildProcess.<anonymous> (/Users/kloetzchengrafik/Documents/send-html-mail/node_modules/python-shell/index.js:136:13)
at ChildProcess.emit (events.js:315:20)
at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
----- Python Traceback -----
File "/Users/kloetzchengrafik/Documents/send-html-mail/main.py", line 21, in <module>
sendmail(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7])
File "/Users/kloetzchengrafik/Documents/send-html-mail/main.py", line 10, in sendmail
msg.add_alternative(htmlcontent.format(asparagus_cid=asparagus_cid[1:-1]), subtype='html')
没有人和我有同样的问题,所以我在这里问。如果我打包它,它什么也不做。
解决方案
推荐阅读
- node.js - 无效的包名称“node_modules”:node_modules 是列入黑名单的名称
- css - CSS网格列可以尊重跨越多列的项目的最小宽度吗?
- c++ - 如何使用指针在字符串的某个索引处获取字符?
- scala - Spark 连接到本地 Hive 而不是远程
- speech-recognition - google-speech-api 并使语音上下文有效
- php - WordPress add_action 错误 call_user_func_array()
- php - 为什么 Laravel Flash 消息在 livesite 上被阻止
- firebase - 如何根据用户的位置发送 FCM
- tensorflow - 如何在我自己的数据集上训练 tensorflow 对象检测图像分割 mask_rcnn_inception_resnet_v2_atrous_coco 实例分割
- r - R read.delim 错误“输入中没有可用的行”