尝试从Jython中的swing GUI发送邮件时出错

时间:2016-01-13 16:29:21

标签: java python swing jython

我已经创建了一个带有发送按钮的基本GUI,该按钮调用sendmail函数,该函数在GUI外部调用时工作正常。但是当单击该按钮时,我收到以下错误:

  

janv。 13,2016 11:15:35 AM org.python.netty.channel.AbstractChannel $ AbstractUnsafe register   AVERTISSEMENT:强制关闭其注册任务未被事件循环接受的频道:[id:0xa8bc713e]   java.util.concurrent.RejectedExecutionException:事件执行程序终止

我已经尝试将该函数作为我的类Window的方法,但是我得到了同样的错误。

这里是sendmail功能(在GUI之外正常工作):

def sendmail(test):
    try:
        sender = "myemail@gmail.com"
        recipient = "toemail@hotmail.com"

        # Message container
        msg = MIMEMultipart('alternative')
        msg['Subject'] = "Link"
        msg['From'] = sender
        msg['To'] = recipient

        # Body of the message
        html = """\
        <html>
          <body>
            <p>big<p>
          </body>
        </html>
        """

        part = MIMEText(html, 'html')
        msg.attach(part)

        mail = smtplib.SMTP('smtp.gmail.com', 587)
        mail.ehlo()
        mail.starttls()

        mail.login('myemail', 'mypassword')
        mail.sendmail(sender, recipient, msg.as_string())
        mail.quit()

        print "Email was sent succesfully."
    except:
        print "Unexpected error: could not send email."
        return 0
    return 1

这是Window类:

class Window:
    def sendclicked(self, event):
        sendmail()

    def __init__(self):
        window = JFrame("Email application", defaultCloseOperation=JFrame.EXIT_ON_CLOSE, size=(255, 400), locationRelativeTo=None)

        panel = JPanel()

        tolabel = JLabel("To :", SwingConstants.RIGHT)
        tolabel.setPreferredSize(Dimension(50, 20))
        tofield = JTextField(15)

        subjectlabel = JLabel("Subject :", SwingConstants.RIGHT)
        subjectlabel.setPreferredSize(Dimension(50, 20))
        subjectfield = JTextField(15)

        messagetextarea = JTextArea("")
        messagetextarea.setPreferredSize(Dimension(222, 200))

        sendbutton = JButton("Send", actionPerformed=self.sendclicked)
        sendbutton.setPreferredSize(Dimension(109, 20))

        savebutton = JButton("Save as draft")
        savebutton.setPreferredSize(Dimension(109, 20))

        infofield = JTextField(20)
        infofield.setEditable(False);

        panel.add(tolabel)
        panel.add(tofield)
        panel.add(subjectlabel)
        panel.add(subjectfield)
        panel.add(messagetextarea)
        panel.add(sendbutton)
        panel.add(savebutton)
        panel.add(infofield)

        window.add(panel)
        window.setResizable(True)
        window.visible = True

最后我的主要是:

if __name__ == '__main__':
    Window()

这是什么导致问题,我该如何解决? 谢谢。

编辑#1:问题从这一行开始,但我似乎找不到解决问题的方法。

mail = smtplib.SMTP('smtp.gmail.com', 587)

以下是完整的错误日志:http://pastebin.com/d01TT8Ge

第二个错误块可能会帮助某人弄清楚我的鳕鱼有什么问题:

  

janv。 13,2016 12:21:54 PM org.python.netty.util.concurrent.DefaultPromise执行   GRAVE:无法提交侦听器通知任务。事件循环关闭?   java.util.concurrent.RejectedExecutionException:事件执行程序终止

编辑#2:有关我的系统的其他信息

  • 使用NetBeans IDE 8.1
  • Jython 2.7.0
  • 操作系统:Windows 7
  • JDK 1.8(默认)

我很遗憾无法访问另一个可以尝试运行程序的系统。如果您需要更多信息,请在评论中告诉我们!

0 个答案:

没有答案