问题描述
我用电子编写了一个应用程序,它可以发送 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,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[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')
没有人有和我一样的问题,所以我在这里问。如果我打包它,它什么都不做。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)