java.net.SocketException:软件导致连接中止:套接字写入错误 [英] java.net.SocketException: Software caused connection abort: socket write error

查看:133
本文介绍了java.net.SocketException:软件导致连接中止:套接字写入错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个应用程序来发送带有附件的邮件.当我附加一个小的zip文件时,它可以正常工作,但是当我附加一个较大的(> 1mb)zip文件时,它返回错误"java.net.SocketException:软件导致连接中止:套接字写入错误",并且我的应用程序正在挂起.

I am creating an application to send mail with an attachment. When I attach a small zip file it is working perfectly but when i attach a larger (> 1mb) zip file it is returning the error "java.net.SocketException: Software caused connection abort: socket write error" and my application is hanging.

我附加文件的代码是:

 protected void addAtachments(String[] attachments, Multipart multipart)
            throws MessagingException, AddressException {
            System.out.println("attaching");
        for (int i = 0; i <= attachments.length - 1; i++) {
            String filename = attachments[i];

            MimeBodyPart attachmentBodyPart = new MimeBodyPart();
            //use a JAF FileDataSource as it does MIME type detection
            DataSource source = new FileDataSource(filename);
            attachmentBodyPart.setDataHandler(new DataHandler(source));
            attachmentBodyPart.setFileName(filename);
            //add the attachment
            multipart.addBodyPart(attachmentBodyPart);
                 System.out.println("attachment added: " +attachments[i]);
        }

还有,有什么方法可以使用javamail更快地附加文件?发送附件消息花了太多时间.

Also, is there any way to attach the file faster using javamail? It is taking too much time to send attached message.

堆栈跟踪:

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 25, isSSL false
220 mx.google.com ESMTP g16sm81301847ibs.8
DEBUG SMTP: connected to host "smtp.gmail.com", port: 25


EHLO vishal
250-mx.google.com at your service, [122.178.231.153]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
STARTTLS
220 2.0.0 Ready to start TLS


EHLO vishal
250-mx.google.com at your service, [122.178.231.153]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
dmlzaGFscmsuMDU1QGdtYWlsLmNvbQ==
334 UGFzc3dvcmQ6
dmlzaGFsQG9yYWNsZQ==
235 2.7.0 Accepted


DEBUG SMTP: use8bit false
MAIL FROM:<xyz@gmail.com>
250 2.1.0 OK g16sm81301847ibs.8
RCPT TO:<xyz@yahoo.co.in>
250 2.1.5 OK g16sm81301847ibs.8
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   xyz@yahoo.co.in
DATA
------=_Part_1_25068634.1322105586140
Content-Type: application/octet-stream; 
name="C:\\Documents and Settings\\Vishal Kulkarni\\MyDocuments\\akon.zip"
Content-Transfer-Encoding: base64
   Content-Disposition: attachment;

    filename="C:\\Documents and Settings\\Vishal Kulkarni\\My Documents\\akon.zip"

UEsDBBQACAAIAGJMcj8AAAAAAAAAAAAAAAAkAAAARW1pbmVtLSAwMSAtIFB1YmxpYyBBbm5vdW5j
ZW1lbnQubXAz1LtlVBxB1y46DK7BneDu7u7uHmRw9+AwgxNcg7tb8BAgBCe4S7AQCBIkuATtm7zf
e++Pc3/cX3etc2qtvaa6q2s/PU937X6qa7eyHC886G+B95XVVFf/WyH5a7Zu9iAHHx8PEU5OVw9e
DnsviKtrAIfXWz1lPZ6/zfh/TeutlYujNZW0m5v7WzdrW1dbNx89HVnVvy3gv8atZyyv8/cX8V9d
WFhYT1ZT47+bTNyCzHrSajJ/q1h/TdfF0ZVK1wFiE0ClpqWlo2zwdx8jCGSozqlua+MIkXWBeHtr
eTm6QrwClOVAn0Ms52h/7qhGlyiVszDJvf5vB+b/pYOurbW7m83/dPlfy3+7/MXWsoU4G0Bc3tqC
XqD/z34cEEja19YLYm+rZutr6wJSwwSB9LTkuf82If81eVdHN1vX/5fT/3ML8JiC8P91jJHj3/sB

输出错误后的15或20分钟,输出将继续打印此加密数据

the out put keeps on printong this encrypted data after 15 or 20 minutes it give error

java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at com.sun.net.ssl.internal.ssl.OutputRecord.writeBuffer(OutputRecord.java:283)
    at com.sun.net.ssl.internal.ssl.OutputRecord.write(OutputRecord.java:272)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:665)
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
    at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:101)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
    at com.sun.mail.util.CRLFOutputStream.write(CRLFOutputStream.java:87)
    at com.sun.mail.smtp.SMTPOutputStream.write(SMTPOutputStream.java:74)
    at com.sun.mail.util.CRLFOutputStream.write(CRLFOutputStream.java:65)
    at com.sun.mail.util.BASE64EncoderStream.encode(BASE64EncoderStream.java:182)
    at com.sun.mail.util.BASE64EncoderStream.write(BASE64EncoderStream.java:135)
    at com.sun.mail.util.BASE64EncoderStream.write(BASE64EncoderStream.java:96)
    at javax.activation.DataHandler.writeTo(DataHandler.java:293)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:845)
    at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:361)
    at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:85)
    at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:868)
    at javax.activation.DataHandler.writeTo(DataHandler.java:301)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
    at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:585)
    at escape.SendMailUsingAuthentication.postMail(SendMailUsingAuthentication.java:131)
    at escape.SendMailFrame.sendButtonActionPerformed(SendMailFrame.java:427)
    at escape.SendMailFrame.access$300(SendMailFrame.java:29)
    at escape.SendMailFrame$4.actionPerformed(SendMailFrame.java:135)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
javax.mail.MessagingException: IOException while sending message;
nested exception is:


    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    java.net.SocketException: Software caused connection abort: socket write error
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:625)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at escape.SendMailUsingAuthentication.postMail(SendMailUsingAuthentication.java:131)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at escape.SendMailFrame.sendButtonActionPerformed(SendMailFrame.java:427)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at escape.SendMailFrame.access$300(SendMailFrame.java:29)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at escape.SendMailFrame$4.actionPerformed(SendMailFrame.java:135)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)


    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.net.SocketException: Software caused connection abort: socket write error

    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at com.sun.net.ssl.internal.ssl.OutputRecord.writeBuffer(OutputRecord.java:283)
    at com.sun.net.ssl.internal.ssl.OutputRecord.write(OutputRecord.java:272)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:665)
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
    at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:101)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
    at com.sun.mail.util.CRLFOutputStream.write(CRLFOutputStream.java:87)
    at com.sun.mail.smtp.SMTPOutputStream.write(SMTPOutputStream.java:74)
    at com.sun.mail.util.CRLFOutputStream.write(CRLFOutputStream.java:65)
    at com.sun.mail.util.BASE64EncoderStream.encode(BASE64EncoderStream.java:182)
    at com.sun.mail.util.BASE64EncoderStream.write(BASE64EncoderStream.java:135)
    at com.sun.mail.util.BASE64EncoderStream.write(BASE64EncoderStream.java:96)
    at javax.activation.DataHandler.writeTo(DataHandler.java:293)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:845)
IOException while sending message

    at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:361)
    at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:85)
    at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:868)
    at javax.activation.DataHandler.writeTo(DataHandler.java:301)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
    at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:585)
    ... 29 more

如果附件很小,则可以正常工作,但是发送邮件需要10到11分钟的时间

if attached file is small it is working but taking 10 to 11 minutes to send mail

我正在使用Jfilechooser选择要附加的文件

I am using Jfilechooser to select files to attach

推荐答案

服务器可能超时,因为连接时间太长 将消息发送到服务器.打开会话调试和协议 跟踪可能会提供更多信息.

The server may be timing out the connection because it's taking too long to send the message to the server. Turn on session debugging and the protocol trace may provide more information.

zip文件存储在哪里?它在JavaMail所在的本地磁盘上吗 应用程序正在运行?

Where is the zip file stored? Is it on the local disk where the JavaMail application is running?

这篇关于java.net.SocketException:软件导致连接中止:套接字写入错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆